Professional Documents
Culture Documents
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)
{
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
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
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.