Respostas dos Exercícios

Nota: Devido a compromissos profissionais, a inserção das respostas tem sido mais lenta do que o esperado — quando todas as respostas tiverem sido publicadas, esta nota será removida da página.

Capítulo 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 configuração de idioma do emulador é modificada para um idioma que não seja o português brasileiro, ele irá buscar as strings de texto dentro do arquivo padrão res/values/strings.xml, o qual está escrito em inglês. 3. Todos os subgrupos do idioma português, incluindo, por exemplo, o português de Portugal, serão 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() (além de onResume() na atividade em segundo plano).

c) onPause() e onStop(). Ao retornar ao aplicativo, serão chamados onRestart(), onStart() e onResume().

d) onPause() e onStop(). Ao retornar ao aplicativo, serão chamados onRestart(), onStart() e onResume().

Capítulo 2

1. Crie a seguinte string em res/values/strings.xml:

Agora, substitua a chamada à string literal pelo seguinte:

2. Aqui está o arquivo strings.xml traduzido:

3. Aqui estão alguns dos problemas mais evidentes: – É possível adicionar um número maior que 10. – É possível adicionar um número menor que 1. – É possível colocar novos números no campo de texto mesmo depois de o jogador ter colocado o número correto. Agora, modifique o valor de android:inputType para “numberSigned” ou “numberDecimal” e você vai brincar de jogo dos 70 erros. :P A propósito, você pode consultar a lista de valores válidos da propriedade android:input aqui: http://developer.android.com/reference/android/widget/TextView.html#attr_android:inputType 4. Para delimitar os valores que o jogador pode colocar no campo de texto, você poderia inserir este código antes do bloco if-else em compareNumbers():

Evidentemente, seria interessante adicionar a string ao arquivo strings.xml. Para travar o jogo após o jogador ter acertado o valor, basta adicionar uma propriedade booleana à classe e verificá-la no início de compareNumbers(), mas tenha em mente que o método setActivated() só vai funcionar a partir da API 11:

Capítulo 5

1. Vamos começar criando um arquivo chamado temp_layout.xml em res/layout:

Agora, vamos referenciá-lo na atividade:

2. Crie, por exemplo, uma nova preferência de tipo int:

Agora, tente retornar o valor de “newInt” como se ele fosse uma string:

Depure a variável temp ou mostre-a no LogCat, e você verá que seu valor é igual a “error”, já que “new_int” não armazena uma string. 3. Sempre que a tela muda de orientação, 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 dimensões novas.

Capítulo 6

1. O método step() de GameView deverá ficar assim:

2. O método step() de GameView deverá ficar assim:

3. Seguem os centros dos retângulos:

a. (35, 35)

b. (153, 25)

c. (27, 222)

d. (8, 499.5)

4. Como a bola possui dimensões iguais a (16, 16), precisamos desenhá-la com dimensões de (32, 32), portanto os cálculos ficariam assim (em pseudocódigo):

Portanto, as coordenadas do retângulo são (344, 224, 376, 256).

5. Utilize a resolução do exercício 4 como modelo — aqui serão 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.

7. Os objetos ficariam posicionados mais próximos do canto superior esquerdo da tela, já que as coordenadas crescem para baixo e para a direita; em termos de dimensões relativas, os objetos pareceriam ser menores do que no caso da tela de resolução 480 x 320.

Capítulo 7

1.

a. 10 pixels por iteração.

b. Aproximadamente 9 pixels por iteração.

c. 7,5 pixels por iteração.

d. Aproximadamente 5,36 pixels por iteração.

e. Aproximadamente 3,38 pixels por iteração.

f. 2,5 pixels por iteração.

2.

a. 0,5 pixel por iteração.

b. 0,75 pixel por iteração.

c. 1 pixel por iteração.

d. Aproximadamente 1,33 pixel por iteração.

e. Aproximadamente 1,58 pixel por iteração.

f. 2 pixels por iteração.

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 questões de arredondamento de valores.

6.