Desenvolvendo aplicações Android Parte IV: Iniciando no Android 4.0
3. Aplicativo para Android Arquitetura
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.
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.
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();
}
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.
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 .
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
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>
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:
Comentários
Postar um comentário