1.4 Conheça a estrutura do projeto

Já temos a primeira versão do nosso Hello World. É bem verdade que ainda não fizemos nenhuma codificação, então vamos analisar a estrutura do projeto e tudo aquilo que foi gerado automaticamente para que essa mágica acontecesse. Na figura 1.20, podemos identificar cinco pastas principais ( src, gen, assets, bin, libs e res) além de uma referência para a biblioteca Android que está sendo utilizada:

  1. src - pasta dedicada ao armazenamentos dos códigos-fonte do projeto e será onde colocaremos as classes Java que criaremos em nossa aplicação. Repare que já existe uma MainActivity.java que foi criada automaticamente quando criamos o projeto;

  2. res - dedicado ao armazenamento de recursos (arquivos de layout, imagens, animações e xml contendo valores como strings, arrays etc.), acessíveis através da classe R;

  3. assets - diretório para o armazenamento de arquivos diversos utilizados por sua aplicação. Diferentemente dos recursos armazenados na pasta res, estes são acessíveis apenas programaticamente;

  4. gen - armazena códigos gerados automaticamente pelo plugin, como a classe R

que mantém referências para diversos tipos de recursos utilizados na aplicação;

  1. libs - pasta para armazenar bibliotecas de terceiros que serão utilizadas pela aplicação;

  2. bin - local utilizado pelos processos de compilação e empacotamento para manter arquivos temporários e códigos compilados.

No diretório raiz do projeto também existem alguns arquivos, sendo um deles, o AndroidManifest.xml, obrigatório para toda aplicação Android. Esse arquivo contém informações essenciais sobre a sua aplicação e sobre o que é necessário para executá-la, incluindo a versão mínima do Android. O nome do pacote escolhido durante a criação do projeto, por exemplo, é armazenado lá para servir como identificador único da sua aplicação.

O manifesto também descreve os componentes (activities, services, content providers e broadcast receivers) que fazem parte da aplicação, possibilitando que o sistema operacional Android seja capaz de identificá-los e determinar quando serão executados. Durante o livro, vamos aprender como trabalhar com esses diferentes componentes. No código a seguir, a activity MainActivity é quem representa o componente que é iniciado quando executamos a aplicação.

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="br.com.casadocodigo.helloandroid" android:versionCode="1"
 
android:versionName="1.0" >
 
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" />
 
<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" >
 
<activity android:name=".MainActivity" android:label="@string/title_activity_main" >
 
<intent-filter>
 
<action android:name="android.intent.action.MAIN" />
 
<category android:name="android.intent.category.LAUNCHER" />
 
</intent-filter>
 
</activity>
 
</application>
 
</manifest>

As activities são componentes da plataforma Android, capazes de apresentar uma tela para interagir com os usuários. Através delas podemos tirar uma foto, enviar um email, visualizar uma imagem e navegar na Internet. Geralmente uma aplicação é composta por várias activities, sendo uma delas a activity principal que é executada quando a iniciamos. O código a seguir demonstra a atividade principal ( MainActivity.java) do nosso projeto HelloWorld que foi criada automaticamente pelo ADT plugin:

public class MainActivity extends Activity {
 
@Override
public void onCreate(Bundle savedInstanceState) {
 
super.onCreate(savedInstanceState);
 
setContentView(R.layout.activity_main);
 
}
 
@Override
public boolean onCreateOptionsMenu(Menu menu) {
 
getMenuInflater().inflate(R.menu.activity_main, menu);
 
return true;
 
}
 
}

Para criar uma atividade, basta fazer com que nossa classe estenda a classe Activity do Android, como pode ser visto na linha 1. Já na linha 6, passamos para o método setContentView o identificador do layout, R.layout.activity_main, que deve ser carregado para construir a interface gráfica da nossa Activity. É bastante comum e também recomendado que as informações referentes a layouts e interfaces gráficas estejam externalizadas em arquivos

XML, separados do código da aplicação. Essas e outras boas práticas nós aprenderemos no decorrer do livro.

Vamos prosseguir verificando o arquivo activity_main.xml, que se encontra no diretório res/layout/ do projeto.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 
xmlns:tools="http://schemas.android.com/tools"
 
android:layout_width="match_parent"
 
android:layout_height="match_parent" >
 
<TextView android:layout_width="wrap_content"
 
android:layout_height="wrap_content"
 
android:layout_centerHorizontal="true"
 
android:layout_centerVertical="true"
 
android:padding="@dimen/padding_medium"
 
android:text="@string/hello_world"
 
tools:context=".MainActivity" />
 
</RelativeLayout>

Recursos gráficos do ADT

Quando abrimos um arquivo de layout no Eclipse com o ADT instalado, ele é apresentado em um visualizador de layouts (aba Graphical Layout), no qual é possível verificar como o layout está ficando além de contar com opções para configurar diversos atributos. Também é possível utilizar esse recurso para adicionar elementos de layout e de entrada de dados. Para ver o XML resultante selecione a outra aba que possui o nome do arquivo. Para conhecer mais sobre os recursos disponíveis no ADT visite http://developer.android.com/tools/help/adt.html.

Neste arquivo de definição de layout temos dois elementos declarados, o RelativeLayout e o TextView, com seus respectivos atributos. Como o nome sugere, o RelativeLayout (linha 1) é um elemento para organização do layout da tela, permitindo configurar a sua altura e largura.

Já o TextView é um widget utilizado para apresentar na tela uma informação textual. O valor a ser exibido por este elemento está especificado através do atributo text. Repare que na linha 13 o valor que TextView deve exibir é @string/hello_world. Aqui temos novamente um caso no qual a externalização é recomendada principalmente para facilitar a internacionalização da aplicação, suportando vários idiomas diferentes e para até mesmo reaproveitar mensagens.

O valor que será utilizado no TextView será na verdade o conteúdo da string que possui o identificador hello_world. No arquivo res/values/strings.xml é possível observar como isso foi definido:

<resources>
 
<string name="app_name">HelloAndroid</string>
 
<string name="hello_world">Hello world!</string>
 
<string name="menu_settings">Settings</string>
 
<string name="title_activity_main">MainActivity</string>
 
</resources>

Na linha 3, declaramos uma string com o nome hello_world cujo valor é “Hello World!“. Por convenção, o arquivo strings.xml é onde definimos recursos do tipo string, ou seja, textos que queremos exibir de alguma maneira em nossa aplicação. Para finalizar, altere o valor da string hello_world para “Hello Android!” e execute a aplicação novamente. O resultado desta alteração pode ser visto na imagem 1.21

Dica: Acessando o AVD Manager e SDK Manager pelo Eclipse

Após a instalação e configuração do ADT, através do menu Window é possível fazer um acesso rápido ao AVD Manager e SDK Manager para baixar novas versões do Android e também criar novos dispositivos virtuais!


⬅️ Capítulo Anterior | Próximo Capítulo ➡️