Escolar Documentos
Profissional Documentos
Cultura Documentos
Saiba mais sobre OHA(Open Handset Aliance), seus membros e as aes que esse grupo de
empresas desenvolve em prol do desenvolvimento com uso da plataforma livre Android:
http://www.openhandsetalliance.com/oha_members.html
1
Figura 1: Arquitetura Android
Independentes do Hardware
Dalvik virtual machine: Uma mquina virtual como a JVM do Java porm otimizada para
dispositivos mveis.
Browser Integrado baseado no webkitengine.
Grficos Otimizados possui uma biblioteca 2D e 3D baseada na especificao OpenGL ES
1.0
SQLite: Um SGBD, para guarda de dados na prpria plataforma.
Suporte multimdia: Para udio, vdeo e formatos de imagem (MPEG4, MP3, AAC, AMR,
JPG, PNG, GIF).
Dependentes do Hardware
Telefonia GSM
Bluetooth, EDGE, 3G, e WiFi
Cmera, GPS, compasso, e acelermetro
2
Alm dos itens j citados acima o Android possui um conjunto de aplicaes como cliente de email,
agenda, mapas, etc. Uma base de bibliotecas para uso de softwares e componentes de sistemas
como mltiplas camadas 2D e 3D, bibliotecas baseadas em C especiais para dispositivos rodando
Linux, FreeType para fontes, etc.
O runtime, ou seja, ambiente de execuo de aplicaes Android possui uma peculiaridade: Cada
aplicao Android roda em seu prprio processo com sua prpria instncia de mquina virtual
(Dalvik). Ela executa arquivos .dex, projetados para consumir o mnimo de memria. O Kernel
Linux, baseado na verso 2.6 trata servios como Gesto de memria, gesto de processos,
segurana, etc.
1 O Kit de desenvolvimento Java JDK Que contm a mquina virtual Java e as ferramentas
para desenvolvedores nessa linguagem, como o compilador Java, etc.
3 AVD(Android Virtual Device) Uma ferramenta que emula um Sistema Operacional Android
em sua mquina.
Para fazer o Download do Android Studio que contm os componentes necessrios para
instalao da plataforma Android no seu computador acesse o link:
http://developer.android.com/sdk/index.html
3
Android Platform-tools (ferramentas da plataforma android, como AVD (Android Virtual
Device, um emulador para o android no seu computador).
A ltima plataforma Android (Ultima verso distribuda do android).
A ltima imagem do sistema Android para o emulador (Verso do android para o
emulador).
Isso facilitou muito a vida dos desenvolvedores, pois juntou em um nico pacote tudo que o
que os programadores precisam para trabalhar com a plataforma android. Vamos agora
conhecer esses componentes:
Para Linux:
Para Windows:
Dentro dos JDK ns temos uma ferramenta chamada JVM (Java Virtual Machine), ou seja,
mquina virtual Java, essa ferramenta consegue rodar as aplicaes Java de forma que diversas
plataformas possam us-lo. Porm para executar especificamente aplicaes android temos que
ter o pacote AVD(Android Virtual Device), portanto deve ser instalado separadamente. Observe a
imagem abaixo que representa o funcionamento da JVM:
4
Cdigo Java
Compilador
Bytecode Java.
Para ter uma aplicao android executvel Android necessrio que de um SDK(Software
development kit). Ele contm um componente responsvel por fazer o Processo de
empacotamento, reunindo no apenas o bytecode, mas tambm arquivos de configurao, layout,
imagens sons, vdeos e outros. O resultado final gerado um arquivo no formato .apk. A Figura 2
ilustra o processo at a gerao do executvel.
5
1.7 IDE Android Studio
Devido ao vasto conjunto de pacotes necessrio para desenvolver e executar aplicativos Android
em uma mquina a Google desenvolveu um Ambiente prprio para o a criao de aplicativos para
o Sistema Operacional Android, essa Ferramenta chama-se Android Studio.
http://developer.android.com/sdk/index.html
Quem j ouviu falar sobre linguagens de programao, certamente j ouviu falar sobre IDEs, ela
um ambiente de desenvolvimento integrado, que permite ao desenvolvedor dispor de ferramentas
que facilitaro sua vida durante o processo de criao de software, uma IDE traz consigo inmeras
funes para facilitar a vida de quem programa, como exemplo podemos citar o fato de
autocompletar o cdigo ao digitarmos determinado trecho de uma linguagem. Observe a Figura 4:
Atravs dessa IDE podemos baixar Ferramenta SDK e Platform-tools para acesso ao AVD. Assunto
que iremos ver nos prximos tpicos.
6
1.8 Configurando Sem Ambiente Para Desenvolvimento.
Na rea do SDK, aparecer um conjunto de verses Android com suas respectivas APIs, Escolha
Android 7.0 utilizando API 24, instalei tambm outras verses que deseja desenvolver para
projetos futuros. Observe a Figura 6.
7
Ao Clicar em OK. Todos os pacotes necessrios sero baixados e instalados em seu computador,
caso necessrio Clique em: Launch Standalone SDK Manager para visualizar todos os pacotes
de forma mais detalhada.
1.8.2 Preparando AVD
Como dito em tpicos anteriores, AVD significa (Android Virtual Device). Depois que criarmos
nossa primeira aplicao precisaremos dele para executar nosso projeto. Para criar nosso primeiro
Emulador basta ir em : Tools > Android > AVD Manager como na Figura 7.
Inicialmente, voc precisa criar um emulador utilizando as configuraes que baixou no processo de
instalao do SDK. No final do processo, aparecer uma janela com esse contedo:
Ocorrendo tudo certo, ao clicar no boto Run na Coluna Actions abrir o emulador com a
seguinte Janela:
8
Nesse momento configuramos com sucesso nosso
emulador, todas as aplicaes desenvolvidas no
Android Studio passar pelo processo de
compilao, empacotamento e ir ser direcionada
para esse emulador..
9
2 Definindo Layout de Aplicaes Android
Agora chegamos ao momento de iniciarmos o desenvolvimento das aplicaes Android. O
desenvolvimento dessas aplicaes requer o conhecimento das estruturas que compem um
projeto para a plataforma, nessa unidade comearemos a compreender as estruturas SRC, GEN e
RES, bem como as estruturas de Layout que facilitam a construo de um projeto para essa
aplicao. Veremos a funo de cada estrutura e com exemplos ilustraremos a criao de
aplicaes.
Compreenderemos tambm os diretrios de sada de projeto onde identificaremos o local de
encontro dos executveis Android. E em seguida o uso dos Widgets que so os componentes
grficos e no-grficos que compem a plataforma android. Nosso objetivo : Entender os
componentes de um projeto android no Android Studio, verificando cada diretrio e sua funo.
Tambm reconheceremos e faremos uso das estruturas de diviso do projeto e suas camadas,
determinando assim o uso de mdias extras dentro do projeto; Usaremoos o compilador para
criao dos aplicativos; Definiremos o passo a passo para a criao uma aplicao Android;
Exportaremos a aplicao Android para Smartphones ou Tablets e realizaremos sua instalao; Por
fim, conheceremos e faremos uso dos widgets Android nas aplicaes com exemplos.
Na Figura 10 definimos o nome do projeto, o seu domnio de acesso e o caminho que ele ficar
guardado, passando para a tela seguinte temos:
10
Figura 11: Criando um Projeto 2
Aqui definiremos em qual verso do SDK mnimo rodar nossas aplicaes. Como instalamos e
baixamos a verso Android 7.0 com API 24, criaremos nosso projeto nessa verso tambm.
Passando para a tela seguinte temos:
Agora precisamos definir um layout padro para o nosso projeto. Para nosso projeto inicial iremos
escolher Empty Activity, na tela seguinte temos:
11
Figura 13: Criando um Projeto 3
Aqui definiremos o nome da Classe Principal que trabalhar com nossa Tela inicial, deixaremos
com o nome MainActivity, por fim clicamos em Finish.
Com isso, o Android Studio criar algumas pastas e arquivos com definies padres do nosso
Projetos, entenderemos o que cada pasta representa no nosso projeto.
12
Agora que entendemos um pouco as pastas, inicialmente vamos compreender como
funciona a classe Principal da nossa aplicao. MainActivity.java
OBS: A Classe R uma classe definida para capturar informaes da nossa camada de viso, no
nosso contexto atual, estamos acessando rea de layout e acessando nosso layout inicial.
Nossa classe MainActivity est pronta para carregar o layout principal, antes de e executarmos o
projeto, vamos at nossa main_activity.xml e realizar algumas alteraes na tela.
Entrando na pasta res > layout > main_activity.xml podemos visualizar a tela que ser carregada
na Figura 15 :
13
Figura 15: Layout Principal
OBS: todo layout nativo android utiliza-se da linguagem XML que basicamente uma linguagem
de marcao onde podemos definir ordem e propriedades, abaixo podemos ver 2 Abas: Design e
Text, ao clicar em Text podemos ver todas as informaes escritas em XML dessa tela.
14
2.2 Widgets
Os Componentes que compem um layout so criados a partir de widgets, mostraremos na
apostila qual XML gerado para cada componente apresentando algumas propriedades de cada
elementos. Antes de entendermos qualquer componente temos que compreender como funciona o
redimensionamento deles, existem 2 propriedades bsicas:
1. match_parent: Esse valor faz o elemento ter a mesma largura ou altura do elemento pai.
2. wrap_content: Esse valor faz o elemento ter a largura ou a altura suficiente englobar o seu
contedo.
4. Valor: Uma dimenso, ou seja, um valor numrico utilizando uma das unidades de medida
suportadas na plataforma Android.
2.2.1 TextView
TextView basicamente um componente onde pode inserir uma informao em formato de texto
muito parecido com a estrutura de uma label. Sua criao em formato XML logo abaixo:
1. <TextView
2. android:layout_width="wrap_content"
3. android:layout_height="wrap_content"
4. android:text="Ol Mundo!" />
Nesse contexto podemos dizer que meu textview ira ter uma largura to tamanho do seu contedo:
Ol Mundo!.
2.2.2 Button
1. <Button
2. android:text="Button"
3. android:layout_width="wrap_content"
4. android:layout_height="wrap_content"
5. android:id="@+id/button" />
15
2.2.3 ToggleButton
Este um elemento que variar entre ON e OFF de acordo com o pressionar do usurio.
1. <ToggleButton
2. android:text="ToggleButton"
3. android:layout_width="wrap_content"
4. android:layout_height="wrap_content"
5. android:id="@+id/toggleButton" />
2.2.4 CheckBox
Esse elemento permite uma seleo individual do usurio, em nvel de controle, esse elemento
poder retornar verdadeiro ou falso.
1. <CheckBox
2. android:text="CheckBox"
3. android:layout_width="wrap_content"
4. android:layout_height="wrap_content"
5. android:id="@+id/checkBox" />
1. <RadioGroup
2. android:layout_width="wrap_content"
3. android:layout_height="wrap_content"
4. android:layout_alignParentStart="true" >
5. <RadioButton
6. android:text="Feminino"
7. android:layout_width="wrap_content"
8. android:layout_height="wrap_content"
9. android:id="@+id/radioButton2"
10. />
11. <RadioButton
12. android:text="Masculino"
13. android:layout_width="wrap_content"
14. android:layout_height="wrap_content"
15. android:id="@+id/radioButton"
16. />
17. </RadioGroup>
16
2.2.6 Spinner
Os Spinners so seletores que podem ser criados para o usurio escolher uma opo. Para isso
temos que antes atribuir o conjunto de opes em strings.xml
Depois de Preparada as opes podemos fazer a referncia no XML Spinner no nosso layout
principal activity_main.xml
1. <Spinner
2. android:layout_width="match_parent"
3. android:layout_height="wrap_content"
4. android:layout_alignParentTop="true"
5. android:layout_alignParentStart="true"
6. android:entries="@array/bairros" />
2.2.7 EditText
Esse componente permite que voc digite um texto ao pression-lo,
1. <EditText
2. android:layout_width="wrap_content"
3. android:layout_height="wrap_content"
4. android:inputType="textPersonName"
5. android:text="Digite um nome"
6. android:id="@+id/editText" />
Por padro, abre o teclado genrico para um componente EditText, porm existe uma propriedade
chamada android:inputType onde podemos definir esse campo como senha, campos
numricos, telefone e outros elementos.
2.2.8 ImageView
Componente responsvel por mostrar uma imagem no projeto. Antes de inserir o componente,
temos que importar a imagem na pasta drawable.
1. <ImageView
2. android:layout_width="wrap_content"
3. android:layout_height="wrap_content"
17
4. app:srcCompat="@drawable/egpce"
5. android:id="@+id/imageView2"
6. />
Aprendemos como incluir nos nossos projeto os elementos, porm temos a responsabilidade de
manter esses elementos alinhados nos mais diferentes tipos de aparelhos com resolues
diferentes. Para isso Trabalharemos em conjunto com Gerenciamento de Layout, assunto que
iremos ver nos prximos tpicos.
2.3.1 RelativeLayout
O RelativeLayout o gerenciador de layout criado por padro nos nossos aplicativos. Veja a seguir
a sua criao XML:
1. <RelativeLayout
2. android:layout_width="match_parent"
3. android:layout_height="match_parent"
4. android:layout_alignParentTop="true"
5. android:layout_alignParentStart="true">
7. </RelativeLayout>
18
Figura 16: Componentes com RelativeLayout
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true">
<Button
android:text="Button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_marginStart="19dp"
android:layout_marginTop="20dp"
android:id="@+id/button4" />
<Button
android:text="Button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button6"
android:layout_alignBaseline="@+id/button5"
android:layout_alignBottom="@+id/button5"
android:layout_toEndOf="@+id/button5" />
<Button
android:text="Button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button5"
android:layout_below="@+id/button4"
android:layout_alignStart="@+id/button4" />
<Button
android:text="Button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_marginEnd="65dp"
19
android:layout_marginTop="163dp"
android:id="@+id/button7" />
</RelativeLayout>
2.3.2 LinearLayout
O LinearLayout um gerenciador que permite posicionar todos os outros componentes da tela,
inclusive novos layouts, na vertical ou na horizontal. Os principais atributos dessa classe so o
width e o height (Largura e altura) e o orientation(orientao) que define a colocao do layout na
vertical e na horizontal. Para testar vamos criar um projeto para definio de alguns objetos:
1. <LinearLayout
2. android:orientation="horizontal"
3. android:layout_width="match_parent"
4. android:layout_height="match_parent"
5. android:layout_alignParentTop="true"
6. android:layout_alignParentStart="true">
8. </LinearLayout>
O atributo que define os alinhamentos dos elementos : android:orientation, que poder ser definido
como: "horizontal" ou "vertical". Veja como os elementos ficam posicionados:
20
2.3.3 GridLayout
O GridLayout trabalha em formato de grade, definindo coordenadas(linha,coluna) para dispor os
elementos na tela, para isso iremos incluir 2 propriedades em cada elemento:
<GridLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true">
<TextView
android:text="TextView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_row="0"
android:layout_column="0" />
android:id="@+id/textView" />
<Button
android:text="Button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_row="0"
android:layout_column="1" />
android:id="@+id/button9" />
<CheckBox
android:text="CheckBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/checkBox"
21
android:layout_row="1"
android:layout_column="2" />
</GridLayout>
3 Manipulando Informaes.
3.1 Evento de Click.
Para Criar um evento de Click, precisamos primeiro criar e definir um boto na camada de viso,
ento indo para nossa main_activity.xml criaremos um boto simples. O Processo o mesmo que
fizemos no tpico 2.2.2. Alm disso criaremos uma referncia para esse boto, estou chamando-o
de btnEvento
Agora podemos ir at a nossa Classe Java. Como esto na tela principal, iremos at a Classe Java
que faz sua criao, ela chama-se MainActivity nela implementaremos o seguinte cdigo:
OBS: Pata ativar o evento do boto, tambm aprenderemos como criar uma Caixa de Dialogo,
atravs do AlertDialog.
22
1. public class MainActivity extends AppCompatActivity implements
View.OnClickListener {
2. Button btnEvento;
3. @Override
4. protected void onCreate(Bundle savedInstanceState) {
5. super.onCreate(savedInstanceState);
6. setContentView(R.layout.activity_main);
7. // Capturando informaes do boto criado.
8. this.btnEvento = (Button) findViewById(R.id.btnEvento);
9. //Criando Evento para boto capturado
10. this.btnEvento.setOnClickListener(this);
11. }
12. @Override
13. public void onClick(View v) {
14. AlertDialog.Builder cDialog = new
AlertDialog.Builder(MainActivity.this);
15. cDialog.setTitle("Ttulo da Mensagem")
16. .setMessage("Contedo da Mensagem")
17. .setNeutralButton("Fechar", null)
18. .show();
19. }
20. }
Inicialmente criamos uma classe com uma implementao chamada OnClickListener que nos
obriga a implementar o mtodo OnClick da linha 13. Em seguida criamos uma referncia ao
boto da tela chamada BtnEvento na linha 2, agora conseguimos capturar as informaes atravs
do mtodo findViewById chamado na linha 8. Quando criamos qualquer elemento na tela, o
Android Studio cria para ns uma referncia em uma Classe chamada R. Dentro dela podemos
fazer a busca apenas por Identificao, em R.id, em seguida basta buscar o ID que definimos no
boto.
23
Figura 21: Resultado Final Eventos
Agora que criamos nosso primeiro evento de click de boto, estamos prontos para fazer a captura
de informao de outros elementos e realizar processamento entre os dados capturamos.
24
Na Esquerda podemos perceber os elementos que foram criados e na direita podemos ver os Ids
que foram definidos para cada elemento, isso importante, pois precisaremos dessas informaes
na classe de controle.
Na nossa nova implementao modularizaremos melhor nossa aplicao, assim aparecero alguns
elementos importantes para conhecermos ao manipular informaes de uma tela. Inicialmente
criaremos uma classe de controle que ir ser responsvel por acionar o clique do boto e fazer a
soma, ento vamos criar uma classe chamada Calculadora, veja o cdigo a seguir:
25
26. .setMessage("Resposta = "+resposta)
27. .setNeutralButton("Fechar", null)
28. .show();
29. }
30. }
A medida que seu aplicativo for crescendo, existe a necessidade de navegar entre as telas, isso
possvel atravs das transies de Activity. Vamos preparar primeiro a nossa Janela Principal
main_activity.xml.
26
Observe que nomeamos nosso boto na Tela Principal de btnGoToJan2, esse boto acionar um
evento para ir para uma, Nova tela..
Para criar uma tela no Android Studio basta ir em res > layout clicar com o boto direito na pasta
layout e ir em New > XML > Layout XML FILE. Com uma nova janela em branco, definiremos a
interface da tela 2.
Por padro, o Android Studio cria a classe MainActivity.java que ir se comunicar com a tela
principal, como criamos uma tela, precisamos criar uma classe Java que ir se comunicar com
essa segunda tela e para isso temos que criar uma classe ao lado de MainActivity.java que
tambm herdar de AppCompatActivity, veja a Classe criada.
Importante: Depois dessa Operao temos que ir no nosso arquivo AndroidManifest.xml do projeto
e adicionar a janela2 como uma nova Activity. Veja o cdigo abaixo:
1. <activity
2. android:name="com.example.fabricionote.appaula.Janela2">
3. </activity>
As definies de android:name mudar de acordo com as Configuraes do seu Projeto. Com isso,
temos nossas 2 telas configuradas, comearemos a criar nossa transio apenas utilizando o
Objeto Intent. Veja o cdigo abaixo:
27
5. @Override
6. protected void onCreate(Bundle savedInstanceState) {
7. super.onCreate(savedInstanceState);
8. setContentView(R.layout.activity_main);
9. this.btnEvento = (Button) findViewById(R.id.btnGoToJan1);
10. this.btnEvento.setOnClickListener(this);
11. }
12. @Override
13. public void onClick(View v) {
14. Intent intent = new Intent(this,Janela2.class);
15. this.startActivity(intent);
16. }
17. }
O Objeto que ser responsvel pela transio chamada de Intent, ela est declarada na linha 14.
Para transitar entre as atividades, o objeto precisar da Activity atual e uma referncia da classe
que ser responsvel pela prxima tela. No construtor da nossa classe Intent est pedindo essas
informaes. Perceba que ainda na Linha 14 o processo de trilha entra a tela atual e a prxima
feita.
OBS: No efeito de transio a tela antiga no perdida, possvel voltar para ela pelo prprio
navegador android, porm se realmente no precisar da tela que foi deixada, podemos encerrar da
memria ela. Para isso basta incluir o mtodo finish().
Nossa EditText foi criada com o nome de txtInfo como mostra a Figura 26. Nosso prximo passo
criar uma TextView na atividade que ser carregada. Veja a imagem a seguir:
28
Figura 27: Informao entre Atividades 1
na janela2 criamos uma TextView chamada txtResposta, ela ir receber as informaes digitadas
da tela principal. Agora vamos para implementao em Java, comeando pela MainActivity, veja o
cdigo a seguir.
As novidades esto entre as Linhas 16 e 21, vamos por etapas para entender o que foi feito. Na
linha 16 capturamos as informaes que o usurio digitou na MainActivity. O Objeto responsvel
por transferir uma informao de uma tela para outra chamado de Bundle, ele est sendo criado
na linha 17. Para Adicionarmos uma informao do tipo String, usaremos o mtodo putString na
linha 18. O mtodo implementado ir pedir 2 parmetros, uma chave, que poder definir como
desejar, e a informao digitada que ir representar o valor. O processo de armazenamento de
uma Bundle similar ao de um HashMap onde tambm criado referencia por chave/valor.
Se tivermos mais informaes a inserir, podemos abaixo da linha 18 chamar mais mtodos put.
29
Na linha 20 preparamos nossa informao armazenada inserindo no nosso Intent atravs do
mtodo putExtras(), assim na linha 21, podemos garantir que a Intent ir fazer a transio da tela
levando a informao da nossa tela atual.
Agora, na prxima tela, podemos capturar o Objeto Bundle que criamos, e realizar os mais
diversos tipos de manipulao, veja o cdigo abaixo:
A novidade est entre as linhas 8 e 12, inicialmente capturamos a referncia da nossa TextView
criada na janela 2 na linha 8. Na linha 9 recebemos a Bundle que criamos na tela anterior. Atravs
do Mtodo getExtras() do mtodo getIntent(). Podemos utilizar um mtodo de verificao de
chave pelo mtodo containsKey() definido na linha 10. Por fim, na linha 11 capturamos as
informaes que armazenamos na tela anterior, atravs do mtodo getString passando como
parmetro a chave que definimos. O Mtodos setText() em tvResposta ir ser encarregado de
alterar as informaes para a digitada na tela inicial do nosso projeto.
Bem Pessoal, nosso curso de Introduo a Desenvolvimento Android est no Fim, o objetivo do
curso dar uma introduo para que vocs possam dar os prximos passos no desenvolvimento
de aplicativos Mveis Android. Espera que tenha gostado do nosso Curso!
30
4 Bibliografia
ANDROID DEVELOPER. Documentao: Disponvel em: <http://developer.android.com>.
15/10/2016
31