Boa tarde Geovani,
E usava algo parecido com uma factory toda vez que fosse chamar uma Activity pra ele retornar a activity correta.
-- Algumas coisas pode ser feito tranquilamente via resources, tipo traduções.
Vou usar o exemplo de Master e Detail pra celular e tablet pra ver se consigo me fazer entender.
Suponha uma interface específica para tablet que é diferente da interface para telefone.
Eu faço o seguinte, uso layouts diferentes aí faço um findViewById numa view pra descobrir qual layout eu estou usando e realizar o comportamento para aquele caso. Mas o código fica algo do tipo:
class MainActivity extends Activity {
void desenha() {
View mainView = findViewById(R.id.main);
if (mainView != null) {
// Carregou interface para celular
// Desenha um por linha
} else {
// Carregou interface para tablet
// No layout para tablet os ID seriam diferentes
// Desenha 5 por linha
// Carrega informações detalhadas
}
}
}O que eu estava sugerindo seria algo do tipo:
abstract class MainActivity extends Activity {
Intent getIntent(Context context) {
if (celular) {
return new Intent(context, MainActivityNormal.class);
} else {
return new Intent(context, MainActivityLarge.class);
} }
abstract void desenha();
}
class MainActivityNormal extends Activity {
// Métodos que independem da configuração
@Override
void desenha() {
// Carregou interface para celular
// Desenha um por linha
}
}
class MainActivityLarge extends MainActivity {
@Override
void desenha() {
// Carregou interface para tablet
// No layout para tablet os ID seriam diferentes
// Desenha 5 por linha
// Carrega informações detalhadas
}
}
Eu coloquei esse exemplo pra não complicar muito a pergunta, mas a ideia seria separar o comportamento da decisão de qual algoritmo usar conforme a configuração.
Assim sempre que tivesse uma alteração para tablet eu só alteraria o layout e a classes correspondentes, se alterasse algo só pra tablet só alteraria nos arquivos com sufixo large.
Outra coisa é que o modo como decidir se usa um ou outro ficaria separado assim se eu mudar o layout só vou alterar num lugar e não em todos os lugares onde precisava verificar antes de tomar uma ação ou outra.
Consegui explicar melhor agora?
Abraço,
PS: Eu escrevi esse código agora direto aqui no navegador porque estou sem IDE aqui então me desculpe se tiver algum erro de sintaxe.
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.






0 comentários:
Postar um comentário