Olá pessoal,
Hoje venho trazer um artigo simples, mas muito útil, sobre como detectar as mudanças de configuração de ambiente. Para este post é interessante utilizar o exemplo em um dispositivo físico. O nosso aplicativo de hoje irá detectar quando mudamos a orientação do dispositivo de retrato para paisagem e vice-versa. Já que até o momento não fizemos nenhum exemplo utilizando dispositivos físicos, vou orientar vocês a configurar o dispositivo para isso.
Primeiro de tudo é importante saber que você irá necessitar do ADB, aferramenta que faz a ponte entre o dispositivo e o PC. Este era só um lembrete, uma vez que você já deve ter este executável nas dentro do SDK do Android. Vou fazer a configuração baseada no meu Galaxy S2 com Android 4.0.3. O caminho para chegar até a configuração pode mudar um pouco, dependendo da versão do Android que utiliza.
1 - Entre no menu de configurações
2 - Vá até "Opções do Desenvolvedor"
3 - Marque a opção "Depuração de USB"
Pronto esta é a configuração que você precisa para executar seu aplicativo no seu dispositivo móvel. Obviamente, você precisará do cabo de dados do aparelho também, e em alguns casos, do driver para a comunicação através do ADB.
Vamos deixar o nosso dispositivo de lado um pouco e falar sobre código. Quando estamos trabalhando com a detecção de eventos do sistema, como a troca de orientação da tela, precisamos saber que estes eventos reiniciam a atividade atual para se adaptar as novas configurações adotadas pelo sistema. Se a atividade é extremamente simples e não é um problema ser reiniciada, você não precisa fazer nada, mas se a as atividade não pode ser reiniciada e você quer manipular os dados da nova configuração, você pode inserir a linha em destaque no AndroidManifest.xml
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:configChanges="orientation"
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>
Você pode ter mais detalhes deste tipo de manipulação no link http://developer.android.com/guide/topics/resources/runtime-changes.html. Você pode aprofundar sua pesquisa neste link e descobrir quais são os eventos de sistema que podem ser manipulados.
Agora que já temos esta consciência, vamos escrever algum código para detectar a mudança de ambiente. O layout deste aplicativo e código fonte podem ser baixados clicando aqui:
Veja no código abaixo que temos um função própria e o tratamento do evento onConfigurationChanged.
A nossa função, setText, recebe um valor e trata o de acordo com o valor recebido da nova configuração para exibição de texto amigável na tela.
private void setText(int orientation) {
TextView txt = (TextView) findViewById(R.id.txtOrientation);
switch (orientation) {
case (Configuration.ORIENTATION_LANDSCAPE):
txt.setText("Landscape");
break;
case (Configuration.ORIENTATION_PORTRAIT):
txt.setText("Portrait");
break;
}
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setText(newConfig.orientation);
}
Quando a nova configuração é recebida primeiro é chamado o método onConfigurationChanged da classe pai e dois nosso evento é tratado.
Para testar nosso aplicativo você terá de conectar seu dispositivo ao computador, pela porta USB e executar o projeto no Eclipse. Se você tiver aberto a AVD do Android será mostrado um menu questionando em quais dos dispositivos você quer executar.
Depois que executar, rotacione seu dispositivo e veja que o nosso sistema irá escrever em qual posição que o dispositivo está.
No próximo tópico vou tratar sobre o ciclo de vida de um atividade.
Abraço
Nenhum comentário:
Postar um comentário