sábado, 15 de setembro de 2012

Criando primeiro programa

Olá a todos.

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.


Repare também que a caixa de texto "Build SDK" possui o valor "Android 2.3.3 (API 10)", e a caixa de texto "Minimum Required SDK" possui o valor "API 8: Android 2.2 (Froyo)". Isso significa que a versão mínima suportada para este aplicativo é a 2.2, e a recomendada é a 2.3.3. Assim, este programa NÃO RODARÁ em celular com versões inferiores à 2.2 (como as versões 1.5 - Cupcake, 1.6 - Donut, e 2.1 - Eclair).

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.

Agora que entendemos um pouco a estrutura do nosso projeto, precisamos executá-lo para ver como um programa Android é executado via Eclipse. Isto é explicado na etapa abaixo.

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.

4 comentários:

  1. Comecei a acompanhar seu blog esse mes, estou gostando, muito obrigado pelo tempo dedicado!

    Att DAGC.

    ResponderExcluir
  2. Escorpião, eu que agradeço pelos elogios.

    ResponderExcluir
  3. Parabéns pelas dicas, eu estou fazendo um curso de desenvolvimento básico de android mas muitas coisas que vc disse ainda não sabia. você pode me indicar um forum ou site que eu aprenda muito de android pricipalmente se for grátis... rsrsr

    ResponderExcluir
  4. Se quer aprender Android, compre o livro do Ricardo Lecheta. Ele pode ser encontrado neste link:
    http://www.livroandroid.com.br/
    Te garanto com 100% de certeza que com este livro você aprenderá TUDO sobre Android!

    ResponderExcluir