• Nenhum resultado encontrado

Teste do aplicativo Tip Calculator Abra e execute o aplicativo

definição de funcionalidade de aplicativo com Java

3.2 Teste do aplicativo Tip Calculator Abra e execute o aplicativo

Abra o IDE Android Developer Tools e importe o projeto do aplicativo Tip Calculator.

Execute os passos a seguir:

1. Ative o AVD do Nexus 4. Para este teste, usaremos o AVD do smartphone Nexus

4 que você configurou na seção “Antes de começar”. Para ativar o AVD do Ne- xus 4, selecione Window > Android Virtual Device Manager a fim de exibir a caixa de

diálogo Android Virtual Device Manager. Selecione o AVD do Nexus 4 e clique em Start...; em seguida, clique no botão Launch na caixa de diálogo Launch Options que

aparece.

2. Abra a caixa de diálogo Import. Selecione File > Import... para abrir a caixa de diá-

logo Import.

3. Importe o projeto do aplicativo Tip Calculator. Expanda o nó General, selecione Existing Projects into Workspace e, em seguida, clique em Next > para ir ao passo Import Projects. Certifique-se de que Select root directory esteja selecionado e, em

seguida, clique em Browse.... Na caixa de diálogo Browse For Folder, localize a pasta

TipCalculator na pasta de exemplos do livro, selecione-a e clique em OK. Certifi-

que-se de que Copy projects into workspacenão esteja selecionado. Clique em Finish

para importar o projeto. Agora ele aparece na janela Package Explorer.

4. Ative o aplicativo Tip Calculator. Clique com o botão direito do mouse no pro-

jeto TipCalculator na janela Package Explorer e selecione Run As > Android Applica- tion para executar o Tip Calculator no AVD.

Digite um total de conta

Usando o teclado numérico, digite 34.56. Basta digitar 3456 – o aplicativo posicionará os centavos à direita do ponto decimal. Se cometer um erro, pressione o botão de exclusão ( ) para apagar um dígito à direita por vez. Os componentes TextView sob os rótulos da gorjeta de 15% e da porcentagem de gorjeta personalizada (18% por padrão) mostram

o valor da gorjeta e o total da conta para essas porcentagens. Todos os componentes TextViewTip e Total são atualizados sempre que você insere ou exclui um dígito.

• Usar várias classes Android para criar objetos. • Chamar métodos em classes e objetos Android. • Definir e chamar seus próprios métodos.

• Usar herança para criar uma subclasse da classe Activity do Android que define as funcionalidades do aplicativo Tip Calculator.

• Usar tratamento de eventos, classes internas anônimas e interfaces para processar as interações da interface gráfica do usuário.

3.3.1 Classe Activity

Ao contrário de muitos aplicativos Java, os aplicativos Android não têm um método main.

Em vez disso, eles têm quatro tipos de componentes executáveis – atividades, serviços, pro- vedores de conteúdo e receptores de transmissão por broadcast. Neste capítulo, vamos discutir as atividades, as quais são definidas como subclasses de Activity (pacote android.app).

Os usuários interagem com uma atividade por meio de componentes de visualização* – isto é, componentes da interface gráfica do usuário. Antes do Android 3.0, normalmente uma atividade distinta era associada a cada tela de um aplicativo. Como você vai ver a partir do Capítulo 5, uma atividade pode gerenciar vários fragmentos. Em um telefone, cada fragmento geralmente ocupa a tela inteira e a atividade alterna entre os fragmentos com base nas interações do usuário. Em um tablet, as atividades frequentemente exibem vários fragmentos por tela para aproveitar melhor o tamanho grande da tela.

3.3.2 Métodos de ciclo de vida de

Activity

Ao longo de toda sua vida, uma atividade pode estar em um dentre vários estados – ativa (isto é, em execução), pausada ou parada. A atividade transita entre esses estados em res- posta a vários eventos.

• Uma atividade ativa é visível na tela e “tem o foco” – isto é, está no primeiro plano. Essa é a atividade com que o usuário está interagindo.

• Uma atividade pausada é visível na tela, mas não tem o foco – como quando uma caixa de diálogo de alerta é exibida.

* N. de R. T. Neste livro, os termos visualização, Views e componentes de visualização são usados

• Uma atividade parada não é visível na tela e é provável que seja encerrada pelo sis- tema quando a memória que ocupa for necessária. Uma atividade é parada quando outra se torna ativa.

À medida que uma atividade transita entre esses estados, o runtime do Android chama vários métodos de ciclo de vida – todos os quais são definidos na classe Activity

http://developer.android.com/reference/android/app/Activity.html

Você vai sobrescrever o método onCreate em cada atividade. Esse método é chamado

pelo runtime do Android quando uma atividade está começando – isto é, quando sua in- terface gráfica do usuário está prestes a ser exibida para que o usuário possa interagir com a atividade. Outros métodos de ciclo de vida importantes incluem onStart, onPause, onRestart, onResume, onStop e onDestroy. Vamos discutir a maioria desses métodos em capítulos posteriores. Cada método de ciclo de vida de atividade que você sobrescreve deve chamar a versão da superclasse; caso contrário, ocorrerá uma exceção. Isso é neces- sário porque cada método de ciclo de vida na superclasse Activity contém o código que deve ser executado, além do código que você define em seus métodos de ciclo de vida sobrescritos.

3.3.3 Organização de componentes de visualização com

LinearLayout

e

GridLayout

Lembre-se de que os layouts organizam os componentes de visualização em uma interfa- ce gráfica do usuário. Um componente LinearLayout (pacote android.widget) organiza

os views horizontalmente (o padrão) ou verticalmente e pode dimensioná-los proporcio- nalmente. Usaremos isso para organizar dois componentes TextView horizontalmente e garantir que cada um utilize metade do espaço horizontal disponível.

GridLayout (pacote android.widget) foi introduzido no Android 4.0 como um novo layout para organizar views em células em uma grade retangular. As células podem ocupar várias linhas e colunas, possibilitando layouts complexos. Em muitos casos, GridLayout pode ser usado para substituir o componente TableLayout, mais an- tigo e às vezes menos eficiente, que organiza componentes de visualização em linhas e colunas, em que cada linha normalmente é definida como um componente TableRow e o número de colunas é definido pelo componente TableRow que contém a maioria das células. Normalmente, GridLayout exige nível de API 14 ou mais alto. Contudo, a

Android Support Library fornece versões alternativas de GridLayout e de muitos outros recursos de interface gráfica do usuário para que você possa utilizá-los em versões mais antigas do Android. Para obter mais informações sobre essa biblioteca e como utilizá-la em seus aplicativos, visite:

http://developer.android.com/tools/support-library/index.html

Um componente GridLayoutnão pode especificar, dentro de determinada linha, que o espaço horizontal deve ser alocado proporcionalmente entre vários componentes de visualização. Por isso, várias linhas na interface gráfica do usuário deste aplicativo colocarão dois componentes TextView em um componente LinearLayout horizontal. Isso permitirá colocar dois componentes TextView na mesma célula de GridLayout e dividir o espaço da célula igualmente entre eles. Vamos abordar mais layouts e visualizações em capítulos posteriores – para ver uma lista completa, visite:

podem ser inseridos.

Um componente SeekBar – frequentemente chamado de controle deslizante em ou-

tras tecnologias de interface gráfica do usuário – representa um valor inteiro no intervalo 0 a 100 por padrão e permite ao usuário selecionar um número nesse intervalo movendo o cursor do componente SeekBar. Você vai personalizar o componente SeekBar de modo que o usuário possa escolher uma porcentagem de gorjeta personalizada somente no in- tervalo mais limitado de 0 a 30.

Na janela Properties, as propriedades mais comumente personalizadas de uma

visualização normalmente aparecem na parte superior, com seus nomes exibidos em negrito (Fig. 3.2). Todas as propriedades de uma visualização também são organizadas em categorias dentro da janela Properties. Por exemplo, a classe TextView herda muitas propriedades da classe View; portanto, a janela Properties exibe uma categoria TextView

com propriedades específicas para esse componente, seguida de uma categoria View com

propriedades herdadas da classe View.

Propriedades de

TextView mais comumente

personalizadas Você pode clicar em

para expandir uma categoria ou em para recolher uma categoria expandida

Figura 3.2 Janela Properties mostrando as propriedades mais comumente personalizadas de um componente TextView.

3.3.5 Formatação de números como moeda corrente específica

da localidade e strings de porcentagem

Você vai usar a classe NumberFormat (pacote java.text) para criar moeda corrente específi-

Você também poderia adicionar strings de acessibilidade e internacionalizar o aplicativo usando as técnicas que aprendeu nas Seções 2.7 e 2.8, embora não tenhamos feito isso neste aplicativo.

3.3.6 Implementação da interface

TextWatcher

para lidar com

alterações de texto em componente

EditText

Você vai usar uma classe interna anônima para implementar a interface TextWatcher (do

pacote android.text) para responder aos eventos gerados quando o usuário altera o texto no

componente EditText deste aplicativo. Em particular, vai usar o método onTextChanged para exibir o valor da conta formatado em moeda corrente e para calcular a gorjeta e o total à medida que o usuário insere cada dígito.

3.3.7 Implementação da interface

OnSeekBarChangeListener