Livro 2 - Projeto da Mini-Calculadora
2. Recursos Envolvidos
Nesse projeto usaremos os seguintes recursos na construção do aplicativo MiniCalculadora:
- Classe Activity
- Um aplicativo Android possui quatro tipos de componentes executáveis: activities, services, content providers e broadcast receivers. Neste projeto discutiremos activities que são subclasses da classe Activity (pacote android.app).
- Todo aplicativo possui diversas activities, cada uma vinculada a uma tela do aplicativo. Ao se clicar em uma View (componentes da interface) o usuário consegue interagir com a Activity.
- As Activities possuem um ciclo de vida onde passam por diferentes estados: em execução (active), pausado (paused) ou parado (stopped). A Activity muda de estados em resposta a diferentes tipos de eventos:
- Uma Activity ativa é visível e possui foco de toda tela.
- Uma Activity pausada é visível na tela, mas não possui foco, por exemplo, quando uma mensagem de alerta é mostrada.
- Uma Activity parada não é visível na tela, está no plano de fundo e pode ser encerrada pelo Android para poupar memória. Uma Activity é parada quando outra Activity se torna ativa. Por exemplo, durante o uso de um aplicativo se recebe uma chamada de telefone, o aplicativo das chamadas telefônicas se torna ativo e o anterior é parado.
- Quando uma Activity é iniciada (estado starting) ela sempre executa o método onCreate. É nesse método que definimos as configurações iniciais dos aplicativos.
- Outros tipos de método podem ser invocados de acordo com o clico de vida da Activity: onStart, onPause, onRestart, onResume, onStop e onDestroy.
- GridLayout
- GridLayout é um tipo de layout que organiza os componentes (Views) em células de uma grade com linhas e colunas. Cada célula pode ocupar mais de uma linha e coluna ou ainda conter outros layouts, o que permite a construção de layouts mais complexos.
- TextViews, EditText e SeekBar
- Usando a ferramenta gráfica de desenho do Android Studio, iremos usar os componentes: TextView (já utilizado no projeto 1), EditText e SeekBar.
- EditText - em outras tecnologias esse elemento é chamado de text box ou text field - trata-se de uma caixa de texto que aceita a entrada do usuário. Neste projeto vamos especificar a EditText para aceitar apenas números e restringir o máximo de números que podem ser digitados.
- SeekBar é uma barra de progresso que representa um valor inteiro de 0 a 100 por padrão. O usuário pode interagir com a barra e aumentar ou diminuir seu valor. Neste projeto, vamos usar a SeekBar para representar o valor da taxa de serviço e limitá-la para aceitar valores entre 0 e 30.
- Classe NumberFormat
- Vamos usar a classe NumberFormat (pacote java.text) para formatar os valores da aplicação para o padrão da moeda (R$, U$, etc.) de acordo com a localidade do aplicativo - uma parte importante da internacionalização de aplicativos. Além disso, também será aplicada formatação para mostrar a porcentagem da taxa de serviço.
- Interface TextWatcher
- Para fazer o tratamento de eventos de uma EditText é preciso implementar a interface TextWatcher (pacote android.text). Em particular, usaremos o método da interface onTextChanged para mostrar em moeda o novo valor inserido e (re) calcular o valor da taxa de serviço e valor total da conta, toda vez que for digitado ou alterado um número da EditText.
- Interface OnSeekBarChangeListener
- Para fazer o tratamento de eventos de uma SeekBar temos que implementar a interface SeekBar.OnSeekBarChangeListener (pacote android.widget). Em particular, usaremos o método onProgressChanged para mostrar a taxa de serviço em porcentagem e (re) calcular o valor da taxa de serviço e o total da conta toda vez que o usuário interagir com a barra de progresso.
- Material Design
-
- O Android segue as diretrizes de Material Design do Google para a construção de interfaces gráficas. Essas diretrizes especificam o comportamento dos componentes como elevação e sobra, cores, entre outros recursos.
- Material Themes
- O tema de um aplicativo se refere a toda uma construção visual da aplicação. O Android oferece uma série de tema pré-definidos de acordo com o Material Design:
- Tema light - possui uma app bar branca, um plano de fundo branco e texto em preto ou cinza escuro
- Tema light com app bar preta e texto branco
- Tema dark - app bar preta, plano de fundo cinza escuro e texto em branco ou cinza claro
- Ao construir uma interface gráfica, podemos escolher entre esses temas pré-definidos ou personalizar com novas cores os estilos. Para este projeto,iremos usar o tema padrão utilizado nas templates do Android Studio e,posteriormente, modificá-lo com cores personalizadas.
- O tema de um aplicativo se refere a toda uma construção visual da aplicação. O Android oferece uma série de tema pré-definidos de acordo com o Material Design:
- Material Design: Elevation e Shadows
- Por especificações do Material Design, sombras (shadows) são aplicadas aos componentes de uma interface de acordo com a sua elevação com a ideia de imitar o mundo real. Logo, ao se especificar a propriedade elevation de uma View, o Android irá automaticamente aplicar um efeito de sombra ao componente.
- Segundo as diretrizes do Material Design, cada tipo de componente possui uma elevação recomendada, por exemplo, para um menu é 8dp e uma caixa de diálogo é 24dp.
- Material Design: Colors
- O Google também recomenda uma paleta de cores para ser usada em aplicativos. Cada cor possui versões de diferentes tonalidades, de tons mais claros a escuros, o que permite a construção de aplicativos com cores harmoniosas.
- O Android Studio oferece uma editor de temas (Theme Editor) para ajudar na escolha dessas cores.
- AndroidManifest.xml
- O arquivo AndroidManifest.xml é criado pelo Android Studio na inicialização do projeto. Esse arquivo contém diversas configuração do aplicativo como: nome do aplicativo, nome do pacote, Activity principal e mais. Neste projeto iremos configurar esse arquivo para que o aplicativo force o uso do teclado numérico ao se abrir e rode apenas em modo retrato (portrait).