A maior rede de estudos do Brasil

Grátis
162 pág.
Apostila Android

Pré-visualização | Página 4 de 32

em background. Em geral são tarefas mais
longas, rodadas em background para não prejudicar a responsividade da aplicação.
Intents - é o componente que inicia os demais (activities, services e receivers). Para criar uma nova
activity ou service, você faz através dos intents.
Broadcast receivers - é um componente responsável por responder a eventos do sistema. Os even-
tos podem ser de variados tipos, por exemplo, uma localização foi encontrada pelo GPS, ou
que a bateria está acabando, etc.
Content providers - componente responsável por gerenciar dados da aplicação. Caso você queira
compartilhar os dados da sua aplicação com outras, você só consegue fazê-lo através de um
content provider. Porém, mesmo quando a informação é usada somente na sua aplicação e não
é compartilhada com as demais, é possível usar um content provider para organizar a forma
como os dados são consultados.
www.k19.com.br 17
VISÃO GERAL DE UMA APLICAÇÃO ANDROID 18
18 www.k19.com.br
LAYOUTS E WIDGETS
C
A
P
Í
T
U
L
O
3
Activities
Uma activity é o componente responsável por mostrar uma tela ao usuário. Sempre que você
quiser criar uma nova tela na aplicação, deverá criar uma classe que herda de Activity. Entre os
principais métodos da activity estão os que são responsáveis pelo seu ciclo de vida. O ciclo de vida
de uma activity se refere a ordem em que os métodos são chamados desde a sua criação, até o seu
final, quando a activity é destruída. Estes métodos são:
OnCreate - é chamado quando a activity é criada.
onStart - é chamado após o onCreate, e antes da activity se tornar visível para o usuário.
onResume - é chamado após o onStart, quando a activity se torna visível para o usuário.
onPause - é chamado após o onResume, quando a activity está para perder a visibilidade para outra
activity.
onStop - a activity não está mais visível para o usuário.
onDestroy - a activity está prestes a ser destruída.
Layouts em XML
As interfaces da aplicação são definidas em arquivos XML que ficam na pasta res/layout. Todos
os arquivos de layout devem ficar nesta pasta, você não pode agrupá-los em outra pasta.
Mais Sobre
Até é possível criar interfaces usando apenas código Java, sem criar os layouts em XML,
porém o código fica muito extenso e complicado de entender, conforme a interface vai
ficando maior e mais complexa.
A ligação entre a interface em XML e seus elementos com o código Java da activity é feita através
de um arquivo especial, com o nome apenas de R.java que fica na pasta gen. Esse arquivo é gerado
automaticamente, e você não deve fazer nunca alterações manuais nele. O nome R é como uma
abreviação para resources.
www.k19.com.br 19
LAYOUTS E WIDGETS 20
1 @Override
2 public void onCreate(Bundle savedInstanceState) {
3 super.onCreate(savedInstanceState);
4 setContentView(R.layout.main);
5 }
Código Java 3.1: ExemploActivity.java
No exemplo acima, o método setContentView serve para definir qual será o conteúdo da activity.
Ao passar como parâmetro R.layout.main estamos dizendo que o conteúdo da activity está definido
no arquivo main.xml da pasta res/layout.
Existem dois tipos de elementos no XML de um layout, os containers e os widgets. Um contai-
ner é um elemento que agrega vários outros elementos, sejam eles outros containers ou widgets.
Widgets são os elementos isolados como textos, botões, caixas de texto, etc. Uma coisa em comum
entre todos os elementos XML é que eles precisam obrigatoriamente dos atributos layout_width e
layout_height para indicar a largura e altura do elemento, respectivamente. Em vez de valores abso-
lutos (em pixels) é comum ver os valores match_parent para indicar que deve ter a mesma largura do
elemento que o contém, ou wrap_content para indicar que deve ter a mesma largura do conteúdo
do elemento.
Entre os containers temos os seguintes tipos:
LinearLayout - possui um atributo orientation que pode receber o valor vertical ou horizontal que
indica que os elementos filhos devem ser agrupados na vertical ou horizontal.
RelativeLayout - é um layout que permite posicionar os elementos filhos de maneira relativa, um
em relação ao outro.
FrameLayout - é um tipo de layout bem simples, que permite adicionar apenas um elemento. Se
adicionar mais elementos, eles irão ser desenhados sobre os outros, parcialmente ou total-
mente.
TableLayout - como o nome sugere, serve para criar tabelas. Você deve adicionar elementos do tipo
TableRow, e nestes elementos adicionar as células que deseja mostrar.
Entre os diversos widgets temos:
TextView - usado para mostrar textos na tela.
EditText - usado para que o usuário digite alguma entrada.
Button - usado para que o usuário execute ações através de cliques.
CheckBox - usado para que o usuário marque opções.
RadioButton - o mesmo que acima, mas permite marcar apenas uma opção.
Spinner - usado para que o usuário selecione uma opção (combo box).
ImageView - usado para mostrar imagens na tela.
De acordo com o widget, existem diferentes tipos de atributos que cada um pode receber, alguns
serão vistos nos exercícios.
20 www.k19.com.br
21 LAYOUTS E WIDGETS
Exercícios de Fixação
1 Crie um novo projeto Android, da mesma forma que foi criado no capítulo anterior. Use como
nome para o projeto Layouts. O nome do pacote deve ser br.com.k19.android.cap03, e o nome da
activity deve ser MainActivity.
2 Na pasta res/layouts crie um arquivo chamado linear.xml. Ele deve conter o seguinte conteúdo:
1 <?xml version="1.0" encoding="utf -8"?>
2 <LinearLayout xmlns:android="http:// schemas.android.com/apk/res/android"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5 android:orientation="vertical" >
6
7 <TextView
8 android:layout_width="match_parent"
9 android:layout_height="wrap_content"
10 android:text="Nome:"/>
11
12 <EditText
13 android:layout_width="match_parent"
14 android:layout_height="wrap_content"/>
15
16 <Button
17 android:layout_width="wrap_content"
18 android:layout_height="wrap_content"
19 android:text="Ver mensagem"/>
20 </LinearLayout >
Código XML 3.1: linear.xml
A seguir edite o arquivo MainActivity.java para que ele fique com o seguinte conteúdo:
1 package br.com.k19.android.cap03;
2
3 import android.app.Activity;
4 import android.os.Bundle;
5
6 public class MainActivity extends Activity {
7 @Override
8 public void onCreate(Bundle savedInstanceState) {
9 super.onCreate(savedInstanceState);
10 setContentView(R.layout.linear);
11 }
12 }
Código Java 3.2: MainActivity.java
Após isso, rode a aplicação e veja o resultado. Ele deve ficar semelhante à figura abaixo:
www.k19.com.br 21
LAYOUTS E WIDGETS 22
Figura 3.1: Resultado da tela.
3 Edite o arquivo linear.xml, deixando igual ao exemplo abaixo:
1 <?xml version="1.0" encoding="utf -8"?>
2 <LinearLayout xmlns:android="http:// schemas.android.com/apk/res/android"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5 android:orientation="vertical" >
6
7 <TextView
8 android:layout_width="match_parent"
9 android:layout_height="wrap_content"
10 android:text="@string/name_label"/>
11
12 <EditText
13 android:layout_width="match_parent"
14 android:layout_height="wrap_content"/>
15
16 <Button
17 android:layout_width="wrap_content"
18 android:layout_height="wrap_content"
19 android:text="@string/see_message"/>
20 </LinearLayout >
Código XML 3.2: linear.xml
22 www.k19.com.br
23 LAYOUTS E WIDGETS
Em seguida edite o arquivo strings.xml presente em res/values para que fique igual ao abaixo:
1 <?xml version="1.0" encoding="utf -8"?>
2 <resources >
3
4 <string name="app_name">Layouts </string >
5 <string name="name_label">Nome:</string >
6 <string name="see_message">Ver mensagem </string >
7
8 </resources >
Código XML 3.3: strings.xml
Rode novamente a aplicação e veja se está igual ao que