domingo, 13 de setembro de 2015

Hello World Android: Parte 2

   Continuando o post anterior agora vamos observar o código gerado pelo Android Studio e aprender um pouco mais sobre o Android.
   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.

   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