You are on page 1of 11

Respostas dos Exerccios

Nota: Devido a compromissos profissionais, a insero das respostas tem sido mais
lenta do que o esperado quando todas as respostas tiverem sido publicadas, esta
nota ser removida da pgina.
Captulo 1
1. A segunda atividade colocada no topo da chamada pilha de atividades,
ganhando o foco do aplicativo. A atividade inicial colocada em segundo plano. 2.
Sempre que a configurao de idioma do emulador modificada para um idioma
que no seja o portugus brasileiro, ele ir buscar as strings de texto dentro do
arquivo padro res/values/strings.xml, o qual est escrito em ingls. 3. Todos os
subgrupos do idioma portugus, incluindo, por exemplo, o portugus de Portugal,
sero reconhecidos pelo aplicativo, o qual ir buscar as strings de texto na pasta
res/values-pt. 4.
a) onPause(), onStop() e onDestroy().
b) onPause(), onStop() e onDestroy() (alm de onResume() na atividade em
segundo plano).
c) onPause() e onStop(). Ao retornar ao aplicativo, sero chamados onRestart(),
onStart() e onResume().
d) onPause() e onStop(). Ao retornar ao aplicativo, sero chamados onRestart(),
onStart() e onResume().
Captulo 2
1. Crie a seguinte string em res/values/strings.xml:

1
<string name="empty">The answer field is empty.</string>
Agora, substitua a chamada string literal pelo seguinte:

1
txtAnswer.setText(R.string.empty);
2. Aqui est o arquivo strings.xml traduzido:

1
2
3

4
5
6
7
8
9
10
<resources>
<string name="action_settings">Configuraes</string>
<string name="app_name">02. Adivinhe o Nmero</string>
<string name="correct">Correto!</string>
<string name="empty">O campo de resposta est vazio.</string>
<string name="guess">Adivinhar</string>
<string name="high">Muito alto!</string>
<string name="low">Muito baixo!</string>
<string name="question">Que nmero esto upensando entre 1 e 10?
</string>
</resources>
3. Aqui esto alguns dos problemas mais evidentes: possvel adicionar um
nmero maior que 10. possvel adicionar um nmero menor que 1. possvel
colocar novos nmeros no campo de texto mesmo depois de o jogador ter
colocado o nmero correto. Agora, modifique o valor de android:inputType
para numberSigned ou numberDecimal e voc vai brincar de jogo dos 70 erros.
A propsito, voc pode consultar a lista de valores vlidos da propriedade
android:input aqui:
http://developer.android.com/reference/android/widget/TextView.html#attr_android:i
nputType 4. Para delimitar os valores que o jogador pode colocar no campo de
texto, voc poderia inserir este cdigo antes do bloco if-else em compareNumbers():

1
2
3
4

5
if (number < 1 || number > 10)
{
txtAnswer.setText("Please, insert a valid number.");
return;
}
Evidentemente, seria interessante adicionar a string ao arquivo strings.xml. Para
travar o jogo aps o jogador ter acertado o valor, basta adicionar uma propriedade
booleana classe e verific-la no incio de compareNumbers(), mas tenha em
mente que o mtodo setActivated() s vai funcionar a partir da API 11:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

21
22
23
24
25
26
27
28
29
30
31
32
33
public class GuessTheNumberActivity extends Activity
{
...
private boolean mGameOver;
...
public void compareNumbers(View v)
{
if(mGameOver)&nbsp;
{
return;
}
if(edtGuess.getText().toString().length() == 0)
{
txtAnswer.setText("The answer field is empty.");
}
else
{

...
if(number < mCurrentNumber)
{
...
}
...
else
{
...
edtGuess.setActivated(false);
mGameOver = true;
}
...
}
}
}
Captulo 5
1. Vamos comear criando um arquivo chamado temp_layout.xml em res/layout:

1
2
3
4
5
6
7
8
9
10
11

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/txtQuestion"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Teste PongV1" />
</LinearLayout>
Agora, vamos referenci-lo na atividade:

1
setContentView(R.layout.temp_layout);
2. Crie, por exemplo, uma nova preferncia de tipo int:

1
preferences.begin().putInt("new_int", 10).end();
Agora, tente retornar o valor de newInt como se ele fosse uma string:

1
String temp = preferences.getString("new_int", "error");
Depure a varivel temp ou mostre-a no LogCat, e voc ver que seu valor igual a
error, j que new_int no armazena uma string. 3. Sempre que a tela muda de
orientao, a atividade chama os seguintes callbacks: onPause(). onStop() e
onDestroy() para destruir a atividade em seu formato atual, e em seguida chama
onStart() e onResume() para restaur-la nas dimenses novas.
Captulo 6
1. O mtodo step() de GameView dever ficar assim:

1
2
3
4
5
6
7
8
9
@Override public void step(Canvas canvas)
{
mTempPaint.setARGB(255, 255, 0, 0);
canvas.drawRect(mPlayerDestination, mTempPaint);
mTempPaint.setARGB(255, 0, 255, 0);
canvas.drawRect(mBallDestination, mTempPaint);
mTempPaint.setARGB(255, 0, 0, 255);
canvas.drawRect(mOpponentDestination, mTempPaint);
}
2. O mtodo step() de GameView dever ficar assim:

1
2
3
4
5
6
7
8
9
@Override public void step(Canvas canvas)

{
mTempPaint.setARGB(255, 0, 255, 255);
canvas.drawRect(mPlayerDestination, mTempPaint);
mTempPaint.setARGB(255, 255, 0, 255);
canvas.drawRect(mBallDestination, mTempPaint);
mTempPaint.setARGB(255, 255, 0, 255);
canvas.drawRect(mOpponentDestination, mTempPaint);
}
3. Seguem os centros dos retngulos:
a. (35, 35)
b. (153, 25)
c. (27, 222)
d. (8, 499.5)
4. Como a bola possui dimenses iguais a (16, 16), precisamos desenh-la com
dimenses de (32, 32), portanto os clculos ficariam assim (em pseudocdigo):

1
2
3
4
5
6
7
8
halfScreenWidth = 720 / 2 = 360
halfScreenHeight = 480 / 2 = 240
halfBallWidth = 32 / 2 = 16
halfBallHeight = 32 / 2 = 16
positionLeft = halfScreenWidth - halfBallWidth = 360 - 16 = 344
positionTop = halfScreenHeight - halfBallHeight = 240 - 16 = 224

positionRight = halfScreenWidth + halfBallWidth = 360 + 16 = 376


positionBottom = halfScreenHeight + halfBallHieght; = 240 + 16 = 256
Portanto, as coordenadas do retngulo so (344, 224, 376, 256).
5. Utilize a resoluo do exerccio 4 como modelo aqui sero mostrados apenas
os resultados:
a. (281, 194, 304, 286)
b. (601, 194, 624, 286)
c. (761, 194, 784, 286)
d. (681, 594, 704, 686)
e. (2521, 754, 2544, 846)
6.

1
2
3
4
5
Rect rectA = new Rect(281, 191, 304, 289);
Rect rectB = new Rect(601, 191, 624, 289);
Rect rectC = new Rect(761, 191, 784, 289);
Rect rectD = new Rect(681, 591, 704, 689);
Rect rectE = new Rect(2521, 751, 2544, 849);
7. Os objetos ficariam posicionados mais prximos do canto superior esquerdo da
tela, j que as coordenadas crescem para baixo e para a direita; em termos de
dimenses relativas, os objetos pareceriam ser menores do que no caso da tela de
resoluo 480 x 320.
Captulo 7
1.
a. 10 pixels por iterao.
b. Aproximadamente 9 pixels por iterao.
c. 7,5 pixels por iterao.

d. Aproximadamente 5,36 pixels por iterao.


e. Aproximadamente 3,38 pixels por iterao.
f. 2,5 pixels por iterao.
2.
a. 0,5 pixel por iterao.
b. 0,75 pixel por iterao.
c. 1 pixel por iterao.
d. Aproximadamente 1,33 pixel por iterao.
e. Aproximadamente 1,58 pixel por iterao.
f. 2 pixels por iterao.
3.
a. 45 pixels/segundo.
b. 60 pixels/segundo.
c. 99,9 pixels/segundo.
d. 150 pixels/segundo.
e. 200,1 pixels/segundo.
f. 300 pixels/segundo.
4.
a. 40 segundos.
b. Aproximadamente 26,67 segundos.
c. Aproximadamente 15,38 segundos.
d. Aproximadamente 13,33 segundos.
e. Aproximadamente 8,33 segundos.
f. Aproximadamente 6,67 segundos.
5.
Intervalo 1: 50 ms ou 20 Hz -> 200 / 20 = 10 pixels.
Intervalo 2: 150 ms ou aproximadamente 6,67 Hz -> 200 / 6,67 = 29,99 pixels.
Intervalo 3: 60 ms ou aproximadamente 16,67 Hz -> 200 / 16,67 = 12 pixels.
Intervalo 4: 48 ms ou aproximadamente 20,83 Hz -> 200 / 20,83 = 9,6 pixels.
Intervalo 5: 112 ms ou aproximadamente 8,93 Hz -> 200 / 8,93 = 22,4 pixels.

Intervalo 6: 180 ms ou aproximadamente 5,55 Hz -> 200 / 5,55 = 36,04 pixels.


Intervalo 7: 90 ms ou aproximadamente 11,11 Hz -> 200 / 11,11 = 18 pixels.
Intervalo 8: 206 ms ou aproximadamente 4,85 Hz -> 200 / 4,85 = 41,24 pixels.
Intervalo 9: 104 ms ou aproximadamente 9,62 Hz -> 200 / 9,62 = 20,8 pixels.
A soma dos intervalos resulta 200,07 pixels, devido a questes de arredondamento
de valores.
6.
Designed by Elegant Themes | Powered by WordPress

You might also like