Agora que já foi explicado como se instala o Eclipse e o Android, iremos começar a abordar a criação de programas para Android.
A criação de um programa em Android pode ser dividida em diversas etapas.Vamos a elas.
Passo 1 - Criar o projeto de Android no Eclipse
Para criar um programa em Android, primeiro precisamos criar um projeto para este programa. A imagem abaixo demonstra isto:
Em seguida, escolhemos a opção "Android Application Project", como mostrado abaixo.
Então será mostrada uma nova janela onde teremos que digitar o nome do projeto. Utilizarei o nome ExemploAndroid para este projeto. Repare que à medida que preenchemos o nome do projeto, a caixa de texto "Package Name" é completada com o nome do pacote padrão do projeto.
OBS.: Um pacote é uma estrutura de diretórios em que os arquivos do projeto serão separados. Isto será mais detalhado abaixo.
A próxima tela na criação do projeto é demonstrada abaixo. Nela, temos a opção de layout para as telas do programa que estamos criando. Neste caso, usaremos a opção "BlankActivity".
Por fim, temos a última tela antes de criarmos de fato o projeto do nosso programa em Android. Nesta tela, escolheremos o nome do arquivo que conterá a interface gráfica da tela inicial do nosso programa. Neste caso foi escolhido o nome activity_main.
Ao fim de todo esse processo, será criado o nosso projeto:
O conteúdo de cada pasta do nosso projeto será explicado abaixo, na próxima etapa.
Passo 2 - Entendendo a estrutura do nosso projeto em Android
Um projeto de programa em Android possui uma estrutura rigidamente definida. Ele se divide em:
- AndroidManifest.xml → Este é o arquivo principal do nosso projeto.
Neste arquivo de XML temos as configurações gerais do nosso programa, como o número de versão do nosso programa (android:versionCode="1") e as versões de SDK mínima e máxima suportadas.
Neste caso, a versão mínima é o SDK 8, correspondente à versão 2.2 (comumente chamada de Froyo), e a máxima é o SDK 10, correspondente à versão 2.3.3 (comumente chamada de Gingerbread).
Temos também outras informações, como o ícone do nosso programa (android:icon="@drawable/ic_launcher"), seu tema de layout ( android:theme="@style/AppTheme"), o nome do programa (android:label="@string/app_name"), sua tela principal (android:name=".MainActivity"), e outras informações que agora não são tão importantes.
- src/ → Nesta pasta temos todo o código-fonte em Java.
Quando criamos nosso projeto, apenas o arquivo MainActivity.java é criado. Este é o arquivo que contém a tela inicial do nosso programa. Em Android, uma tela é conhecida como uma Activity. Assim, se queremos criar uma tela, temos que extender a classe em questão de uma Activity.
Uma Activity possui um "ciclo de vida", que é melhor explicado aqui, mais especificamente na seção "Activity Lifecycle". Em suma, uma Activity (que a partir de agora chamaremos de "tela") possui eventos que são ativados quando o foco do programa vai para esta tela pela primeira vez (onCreate), quando o foco simplesmente vai para o programa (onResume), quando minimizamos o programa (onPause) e quando finalizamos o programa (onDestroy), dentre outros.
Cada tela deve possuir OBRIGATORIAMENTE uma interface gráfica associada a ela. Isso é feito através do método setContentView(), que deve ser implementado no evento onCreate. No nosso programa, setamos o layout da MainActivity com o layout activity_main, que é setado como argumento do método setContentView(). Assim, temos nossa tela e seu layout setados corretamente.
Outros pontos acerca do código-fonte da MainActivity (como o que é o evento onCreateOptionsMenu e porque o argumento do método setContentView() é R.layout.activity_main e não simplesmente activity_main) serão explicados mais abaixo.
- res/ → Nesta pasta temos outros arquivos de configuração, como as strings, menus, cores, estilos de layout, e também todas os arquivos de mídia (imagens, arquivos de áudio e de vídeo) do nosso programa.
Repare na figura logo abaixo que possuímos 4 pastas cujo prefixo é drawable. É nesta pasta que armazenamos as imagens e animações do nosso projeto. Mas, por que são 4 pastas e não apenas uma?
Diferentemente do sistema operacional mobile iOS, que possui apenas um tipo de celular (iPhone) e um tipo de tablet (iPad), em Android podemos ter centenas de celulares e de tablets. Assim, teremos também uma grande infinidade de tamanhos de tela possíveis em que um aplicativo Android irá rodar. Prevendo esta característica, a Google optou por criar 4 diferentes tipos de tamanhos de tela: ldpi, mdpi, hdpi e xhdpi.
A sigla ldpi significa "low density of pixels", a mdpi significa "medium density of pixels", hdpi significa "high density of pixels" e xhdpi significa "extremely high density of pixels". Em suma, respectivamente, podemos interpretar essas siglas como "tamanho de tela pequeno" (por exemplo, o celular Sony Ericsson Xperia Mini) , "tamanho de tela médio" (Motorola Atrix), "tamanho de tela grande" (Samsung Galaxy S 5) e "tamanho de tela bem grande" (geralmente tablets). Maiores detalhes aqui.
Seguindo nosso detalhamento, temos a pasta layout/ (onde temos todas as interfaces gráficas à serem utilizadas no nosso projeto), a pasta menu/ (onde teremos todos os menus do nosso projeto), e a pasta values/ (onde podemos ter diversos tipos de estruturas comuns ao nosso projeto, como strings, temas de layout, arrays, cores, dentre outras).
O layout de cada tela do Android será melhor explicado em outro tópico, assim como os menus. Quanto às strings, uma dúvida comum é entender porque precisamos declarar todas as strings em um arquivo de XML, e não no próprio código-fonte em Java.
Esta é mais uma prática bem pensada pela Google. Como o sistema operacional mobile Android é o mais usado do mundo, sendo utilizados em centenas de países diferentes, é necessário haver um suporte à internacionalização. Ou seja, que haja um meio bem facilitado para que um programa em uma língua seja mudado para outra língua. A solução que a Google encontrou foi criar o diretório res/, um diretório específico para armazenar certas estruturas do nosso programa. Neste caso, as strings.
Assim, bastaria modificar apenas o texto constante no arquivo strings.xml para que nosso programa passasse a ter suporte para diversas línguas. Em suma, é bem mais simples modificar o conteúdo do arquivo strings.xml do que sair modificando, um a um, todos os arquivos Java do nosso projeto.
- R → Esta é a classe mais importante de qualquer programa em Android. É aqui que são armazenadas todas as posições de memória dos componentes utilizados no nosso programa (classes Java, arquivos XML, imagens, arquivos de som e áudio, tudo).
Essas posições de memória são basicamente números inteiros. Se, por exemplo, quisermos referenciar um arquivo de imagem como o arquivo ic_launcher.png (o ícone do nosso programa), basta chamarmos a posição de memória em que esta imagem esta armazenada. Embora isso soe algo complicado, é mais simples do que parece. Para isto, basta chamarmos a imagem da seguinte maneira: R.drawable.ic_launcher. Ou seja, R.<diretório da imagem>.<nome da imagem>.
Por isso, no método setContentView() da classe MainActivity.java, o argumento que passamos é R.layout.activity_main, e não activity_main.
OBS.: Esta classe é auto-gerada. Ou seja, mesmo que a modifiquemos manualmente, automaticamente ela será re-gerada novamente.
Passo 3 - Executando nosso projeto
Para executar nosso projeto, primeiramente, precisamos criar um emulador do sistema operacional Android. Isto é bem simples de ser feito. Basta clicar no menu "Window" da barra de menus do Eclipse, e depois em "AVD Manager" (Android Virtual Devices Manager, ou seja, Gerenciador de Dispositivos Virtuais do Android). Em seguida, na nova janela aberta, basta clicar em "New". Então, a janela abaixo será aberta.
Agora, basta escolhermos o nome do nosso emulador, seu "Target" (versão de SDK do Android), seu tamanho de tela no check button "Built-in", e então clicar em "Create AVD". E pronto, temos um emulador de Android pronto para ser usado.
Para executar nosso programa, basta clicarmos com o botão direito no nome do projeto, no "Package Explorer" (ou até mesmo dentro de qualquer arquivo do nosso projeto), e clicar na opção "Run As", e em seguida em "Android Application". Assim, o emulador será aberto, e nosso programa será executado.
Abaixo podemos conferir a execução do nosso programa.
E pronto! Conseguimos criar nosso primeiro programa em Android! Ele é um programa simples, que apenas mostra na tela um texto.
-----
Nos próximos tópicos, serão mostrados programas mais interessantes de serem feitos.
Caso alguém tenha uma dúvida, crítica ou sugestão, sinta-se à vontade.