Existem 3 pastas principais na estrutura da app:
manifests - Onde se encontra o arquivo AndroidManifest.xml;
java - Onde ficam as classes java e
res - pasta ondem ficam os recursos do app. Imagens, xmls, áudios, etc.
Vamos analisar o app Hello World:
Arquivo AndroidManifest.xml:
Cuida das configurações do app:
Pacote da aplicação, Activitys, permissões, etc.
Como o aplicativo só tem uma activity, que nós escolhemos o nome na hora da criação do projeto, o preenchimento do arquivo foi autómatico.
Vamos comentar alguns trechos:
Dentro da cláusula application:
android:icon="@mipmap/ic_launcher"
-> Indica que o ícone do app está na pasta mipmap dentro da pasta res.
-> Indica que o ícone do app está na pasta mipmap dentro da pasta res.
android:label="@string/app_name"
->indica que o nome do aplicativo consta no xml de strings que fica na past values:
Uma boa prática é centralizar todos os textos neste arquivo.
android:theme="@style/AppTheme
-> Indica qual estilo o app vai utilizar. O estilo também é guardado em um xml na pasta values.
A cláusula activity é reservada para as classes que tratarão das telas. No nosso caso a HelloWordActivity.
android:name=".HelloWordActivity"
-> Indica a classe que vai lidar com a tela.
<action android:name="android.intent.action.MAIN" />
->Indica que esta activity será o ponto de entrada da aplicação
<category android:name="android.intent.category.LAUNCHER" />
-> indica que a activity vai aparecer na lista de aplicações do aparelho.
A tela:
O desenho da tela é feito através de arquivos xmls que devem ser gravados na subpasta de layouts da past res. No nosso caso foi criado o activity_helloo_word.xml:
<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" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".HelloWordActivity">
<TextView
android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</RelativeLayout>
Relative Layout - Tipo de Layout do Android que permite o posicionamento relativo entre os objetos.
match_parent - Indica o preenchimento do espaço total da tela na dimensão setada. No caso ele é utilizado para dizer que o Relative Layout vai ocupar a tela completana largura e na altura.
TextView - Objeto que se comporta como um label. Apenas exibe um texto e não permite a entrada de dados pelo usuário.
Percebam que o texto Hello World também está contido no xml de Strings.
O resultado é visto na tela:
Código Java
E o código java?Até agora só configuramos xmls.Muito de nosso trabalho em android é assim mesmo, mas ainda é preciso codificar.Vamos ao código:A classe gerada foi a HelloWorldActivity. Peguei o trecho de código que importa no momento:public class HelloWordActivity extends AppCompatActivity {@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_hello_word); }
Esta é uma classe comum do java que herda de uma classe do Android chamada AppCompatActivity para manter a commpatibilidade com as versões mais antigas do Android.
O método que interessa é o onCreate, como o próprio nome indica, ele é chamado na criação do objeto.
Ele chama o onCreate de sua classe mãe e logo depois o método:
setContentView - Este método é responsável por receber um xml e exibi-lo para o usuário. Como entrada ele está recebendo nosso xml a partir da classe R.
A classe R é A classe do Android. E através dela que você pode ter acesso ao conteúdo das subpastas da pasta res, ou seja, strings, xmls de telas, etc.
Nossa activity, constante da pasta de layouts é acessada com o um recurso da classe R.
R.layout.activity_hello_word - > Procure na pasta layout o arquivo activiy_hello_world.
É isto, não vou fazer um curso de Android, até porque não me sinto preparado para isto, ainda, mas vou postar algumas descobertas neste blog.
Nenhum comentário:
Postar um comentário