sexta-feira, 1 de junho de 2012

Desenvolvendo aplicações Android Parte IV: Iniciando no Android 4.0



Continuando o Ultimo post Desenvolvendo aplicações Android Parte III: Iniciando no Android 4.0, vamos agora passar mais um pouco de conhecimento sobre esta plataforma. Vamos lá!


3. Aplicativo para Android Arquitetura
3.1. AndroidManifest.xml

Os componentes e as configurações de um aplicativo Android são descritas no arquivo AndroidManifest.xml . Por exemplo, todas as Activities e Services do aplicativo devem ser declarados neste arquivo.

Deve conter também as permissões necessárias para a aplicação. Por exemplo, se a aplicação requer acesso à rede deve ser especificada aqui.

                                                            
<?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android = "http://schemas.android.com/apk/res/android"
       package = "de.vogella.android.temperature"
       android:versionCode = "1"
       android:versionName = "1.0" >
     <application android:icon = "@drawable/icon" android:label = "@string/app_name" >
         <activity android:name = ".Convert"
                   android:label = "@string/app_name" >
             <intent-filter>
                 <action android:name = "android.intent.action.MAIN"  />
                 <category android:name = "android.intent.category.LAUNCHER"  />
             </intent-filter>
         </activity>
 
     </application>
     <uses-sdk android:minSdkVersion = "9"  />
 
 </manifest> 
                                             

O package atributo define o pacote de base para os objetos Java referidos neste arquivo. Se um objeto Java está dentro de um pacote diferente, deve ser declarado com o nome completo do pacote qualificado.

O Google Play requer que todas as aplicações Android usem seu próprio pacote único. Por isso, é um bom hábito usar seu nome de domínio reverso como nome do pacote. Isso irá evitar colisões com outros aplicativos Android.

android:versionName e android:versionCode especificam a versão do seu aplicativo.versionName é que o usuário vê e pode ser qualquer sequencia.

versionCode deve ser um número inteiro. O Android Market determina com base no versionCode , se deve executar uma atualização das aplicações para as instalações existentes. Você geralmente começa com "1" e aumenta esse valor por um, se você tiver uma nova versão de seu aplicativo.

A etiqueta de <activity> define uma Activity , neste exemplo apontando para a classe Convert  do pacote node.vogella.android.temperature . Um filtro de intenção está registrado para esta classe que define que esta Activity é iniciada uma vez que o aplicativo é iniciado.A categoria de definição category android:name="android.intent.category.LAUNCHER" define que esta aplicação é adicionada ao diretório do aplicativo no dispositivo Android.

A @string/app_name valor refere-se a arquivos de recursos que contêm o valor real do nome do aplicativo. O uso do arquivo de recurso facilita a fornecer recursos diferentes,Strings por exemplo, cores, ícones, para diferentes dispositivos e facilita a tradução de aplicações.
O "uso-sdk" parte do arquivo AndroidManifest.xml  define a versão SDK mínimo para que sua aplicação é válido. Isso vai impedir que o aplicativo a ser instalado em dispositivos com versões mais antigas do SDK.

3.2. R.java e Recursos

O " gen "diretório em um projeto Android contém valores gerados. R.java é uma classe gerada que contém referências a certos recursos do projeto.
Esses recursos devem ser definidos no diretório "res" e podem ser arquivos XML, ícones ou imagens. Você pode por exemplo definir valores, menus, layouts ou animações através de arquivos XML.

Se você criar um novo recurso, a referência correspondente é automaticamente criada em R.java através das ferramentas Eclipse ADT. Estas referências são estáticas e definem valores int ID para os recursos.

O sistema Android fornece métodos para acessar o recurso correspondente através destes de identificação.

Por exemplo, para acessar uma String com o R.string.yourString ID, você usaria o método getString(R.string.yourString)) .

R.java é criada automaticamente pelo ambiente de desenvolvimento Eclipse, alterações manuais não são necessárias e será substituído pela ferramenta.

3.3. Ativos

Enquanto o diretório res  contém valores estruturados, que são conhecidos para a plataforma Android, o diretório assets  pode ser usado para armazenar qualquer tipo de dados. Você pode acessar esses dados através do AssetsManager que você pode acessar os métodos getAssets() .

AssetsManager permite ler um activity como InputStream com o método  open() .

                                                            
 // Get the AssetManager
 AssetManager manager = getAssets();
 
 // Read a Bitmap from Assets
 try {
         InputStream open = manager.open( "logo.png" );
         Bitmap bitmap = BitmapFactory.decodeStream(open);
         // Assign the bitmap to an ImageView in this layout
         ImageView view = (ImageView) findViewById(R.id.imageView1);
         view.setImageBitmap(bitmap);
 } catch (IOException e) {
         e.printStackTrace();
 }
                                             

3.4. Atividades e Layouts

A interface de usuário para Activities é definida através de layouts. O layout define as incluídas Views(widgets) e suas propriedades.

Um layout pode ser definido através de código Java ou via XML. Na maioria dos casos, o layout é definido como um arquivo XML.

Layouts baseados em XML são definidos através de um arquivo de recurso na pasta /res/layout . Este arquivo especifica os ViewGroups e Views , sua relação e seus atributos para este layout específico.

Se uma View precisa ser acessada por meio de código Java, você tem que dar à View uma identificação única através do android:id atributo. Para atribuir um novo ID para uma View use @+id/yourvalue . A seguir mostra um exemplo em que um Button recebe o "button1" ID atribuído.

                                                                         
 <Button
         android:id = "@+id/button1"
         android:layout_width = "wrap_content"
         android:layout_height = "wrap_content"
         android:text = "Show Preferences"  >
 </Button>
                                             

Por essa conversão irá criar e atribuir um novo yourvalue ID para o correspondente View . Em seu código Java você pode acessar uma  View através do métodofindViewById(R.id.yourvalue) .

Definição de layouts via XML é geralmente a melhor maneira de como separar a lógica de programação a partir da definição de layout. Ele também permite a definição de layouts diferentes para dispositivos diferentes. Você também pode misturar as duas abordagens.

3.5. Referência aos recursos em arquivos XML

Em seus arquivos XML, por exemplo, arquivos de layout, você pode, se referir a outros recursos através do @sinal.

Por exemplo, se você quiser se referir a uma cor que está definida em um recurso XML, você pode consultá-la via @color/your_id . Ou, se você definiu uma string "Olá" em um arquivo de recurso, você pode acessá-lo via @string/hello .

3.6. Atividades e Ciclo de Vida

O sistema Android controla o ciclo de vida de sua aplicação. A qualquer momento o sistema Android pode parar ou destruir a sua aplicação, por exemplo, por causa de uma chamada recebida. O sistema Android define um ciclo de vida de Activities através de métodos pré-definidos. Os métodos mais importantes são:
  • onSaveInstanceState() – chamando-o a Activity é interrompida. Usado para guardar dados de modo que a Activity pode restaurar seus estados se re-iniciado
  • onPause() - sempre chamado se a Activity termina, pode ser usada para liberar recursos ou salvar dados
  • onResume() - chamado se a Activity é re-iniciado, pode ser usado para inicializar os campos
3.7. Mudança de configuração

Uma Activity também será reiniciado, se uma "mudança de configuração", assim chamada acontece. A mudança de configuração acontece se um evento é disparado o que pode ser relevante para a aplicação.Por exemplo, se o utilizador altera a orientação do dispositivo (verticalmente ou horizontalmente). Android assume que uma Activity pode querer usar diferentes recursos para essas orientações e reinicia a Activity .

No emulador você pode simular a mudança de orientação via CNTR + F11.

Você pode evitar um reinício do seu pedido de mudanças de configuração determinados através dosconfigChanges  que atribuem em sua Activity uma definição na sua AndroidManifest.xml . A seguir Activity não será reiniciada em caso de mudanças de orientação ou posição do teclado físico (oculto / visível).

                                                            
 < <activity android:name = ".ProgressTestActivity"
      android:label = "@string/app_name"
      android:configChanges = "orientation|keyboardHidden|keyboard" >
 </activity>
                                             

3.8. Contexto

A classe android.content.Context fornece as conexões com o sistema Android. É a interface para a informação global sobre o ambiente de aplicação. Context também fornece acesso ao AndroidServices , por exemplo, o Serviço de Localização. Activities e Services estendem o Context da classe e, portanto, pode ser usado como Context.

É isso ai galera! Por hoje paramos por aqui, em breve continuarei este grande Tutorial!

Abraços!
Bruno Rafael.

Veja também:

Nenhum comentário:

Postar um comentário

Admin: Bruno

Olá Galera! muito grato por estarem acessando nosso blog. Espero que seja possível transmitir de forma compreensível um pouco de meus conhecimentos em programação, para esta comunidade de desenvolvedores que cresce cada vez mais! Espero que Gostem! Abraço! E meu enorme obrigado à Renato Simões, Átila Soares,Wanderson Quinto, Emerson e a toda galera que sempre ajudou meu sincero obrigado....
Especialmente a Natalia Failache e Rita de Cassia que sempre apoiaram este sonho....

De seu amigo Bruno Rafael.