Activity
Fala galera! O post da sexta-feira sofreu um atraso, mas aqui estamos novamente. Hoje falaremos sobre a classe Activity para complementar o post anterior sobre Intent, seguido de um aplicativo exemplo.
Uma activity é uma classe filha da classe android.app.Activity ou alguma subclasse da mesma. Normalmente apresenta uma tela da aplicação e também é responsável por tratar eventos gerados nessa tela, por exemplo, quando o usuário pressiona um botão ou um item de menu é selecionado.
A classe Activity deve implementar obrigatoriamente o método onCreate(bundle) responsável por realizar a inicialização do aplicativo, por exemplo, executando o método setContentView(view) que define a interface de usuário onde um objeto da classe android.view.View responsável por desenha a interface gráfica da tela é informado.
Cada classe filha de Activity deve ser declarada no arquivo AndroidManifest.xml da mesma forma que declaramos um servlet no arquivo web.xml como mostrado a seguir:
<activity android:name=”.MinhaClasseActivity”/>
Ciclo de Vida
O ciclo de vida de uma activity é bem definido, cada activity iniciada é inserida no topo de uma pilha, chamada de activity stack (pilha de atividades). O coneito de pilha já é conhecido por todos, assim sempre que uma activity é inserida no topo da pilha a anterior que estava em execução fica logo abaixo da nova.
Fonte: https://dariomungoi.wordpress.com/2015/01/27/desenvolvendo-para-android-ciclo-de-vida-de-uma-activity/ |
Existem três subníveis do ciclo de vida principal que ficam se repedindo durante a execução:
· Entire life-time: ciclo de vida completo, inicio e fim de uma activity;
· Oncreate(bundle);
· onDestroy();
· Visible life-time: activity está iniciada no topo da pilha, mas pode estar interagindo com usuário ou em segundo plano;
· onStart();
· onStop();
· onRestart();
· Forenground live-time: activity está interagindo com o usuário;
· onResume();
· onPause();
Não ha muito a falar sobre activity, no post anterior sobre Intent a exemplos de navegação entre activitys, vamos então ao aplicativo exemplo crie um novo projeto no eclipse e preencha a janela new android application como na imagem abaixo:
Arquivos de layout
Tela inicial:
Tela Ciclo Vida:
Layout do item do listview utilizando adapter:
Veja agora os códigos das classes CicloVidaActivity, ExemploListActivity, ExemploListActivityAdapter:
CicloVidaActivity:
public class CicloVidaActivity extends AppCompatActivity implements OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ciclo_vida);
inicializarComponentes();
ActivityCicloVidaUtil.mensagem(this, "1.onCreate()");
}
@Override
protected void onStart() {
super.onStart();
ActivityCicloVidaUtil.mensagem(this, "2.onStart()");
}
@Override
protected void onResume() {
super.onResume();
ActivityCicloVidaUtil.mensagem(this, "3.onResume()");
}
@Override
protected void onRestart() {
super.onRestart();
ActivityCicloVidaUtil.mensagem(this, "4.onRestart()");
}
@Override
protected void onPause() {
super.onPause();
ActivityCicloVidaUtil.mensagem(this, "5.onPause()");
}
@Override
protected void onStop() {
super.onStop();
ActivityCicloVidaUtil.mensagem(this, "6.onStop()");
}
@Override
protected void onDestroy() {
super.onDestroy();
ActivityCicloVidaUtil.mensagem(this, "7.onDestroy()");
}
@Override
public void onClick(View v) {
Uri uri = Uri.parse("http://www.google.com.br");
Intent it = new Intent(Intent.ACTION_VIEW, uri);
startActivity(it);
}
private void inicializarComponentes() {
findViewById(R.id.btnAbrirBrowser).setOnClickListener(this);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ciclo_vida);
inicializarComponentes();
ActivityCicloVidaUtil.mensagem(this, "1.onCreate()");
}
@Override
protected void onStart() {
super.onStart();
ActivityCicloVidaUtil.mensagem(this, "2.onStart()");
}
@Override
protected void onResume() {
super.onResume();
ActivityCicloVidaUtil.mensagem(this, "3.onResume()");
}
@Override
protected void onRestart() {
super.onRestart();
ActivityCicloVidaUtil.mensagem(this, "4.onRestart()");
}
@Override
protected void onPause() {
super.onPause();
ActivityCicloVidaUtil.mensagem(this, "5.onPause()");
}
@Override
protected void onStop() {
super.onStop();
ActivityCicloVidaUtil.mensagem(this, "6.onStop()");
}
@Override
protected void onDestroy() {
super.onDestroy();
ActivityCicloVidaUtil.mensagem(this, "7.onDestroy()");
}
@Override
public void onClick(View v) {
Uri uri = Uri.parse("http://www.google.com.br");
Intent it = new Intent(Intent.ACTION_VIEW, uri);
startActivity(it);
}
private void inicializarComponentes() {
findViewById(R.id.btnAbrirBrowser).setOnClickListener(this);
}
}
ExemploListActivity:
public class ExemploListActivity extends ListActivity {
private String[] itens = { "Nome 1", "Nome 2", "Nome 3" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, itens));
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
String item = (String) getListAdapter().getItem(position);
Toast.makeText(this, "Selecionado: " + item, Toast.LENGTH_SHORT).show();
}
}
private String[] itens = { "Nome 1", "Nome 2", "Nome 3" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, itens));
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
String item = (String) getListAdapter().getItem(position);
Toast.makeText(this, "Selecionado: " + item, Toast.LENGTH_SHORT).show();
}
}
ExemploListActivityAdapter:
public class MainActivity extends AppCompatActivity implements OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
inicializarComponentes();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case id.btnCicloVida: startActivity(new Intent(this, CicloVidaActivity.class)); break;
case id.btnListActivity: startActivity(new Intent(this, ExemploListActivity.class)); break;
case id.btnListActivityAdapter: startActivity(new Intent(this, ExemploListActivityAdapter.class)); break;
}
}
private void inicializarComponentes() {
findViewById(R.id.btnCicloVida).setOnClickListener(this);
findViewById(R.id.btnListActivity).setOnClickListener(this);
findViewById(R.id.btnListActivityAdapter).setOnClickListener(this);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
inicializarComponentes();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case id.btnCicloVida: startActivity(new Intent(this, CicloVidaActivity.class)); break;
case id.btnListActivity: startActivity(new Intent(this, ExemploListActivity.class)); break;
case id.btnListActivityAdapter: startActivity(new Intent(this, ExemploListActivityAdapter.class)); break;
}
}
private void inicializarComponentes() {
findViewById(R.id.btnCicloVida).setOnClickListener(this);
findViewById(R.id.btnListActivity).setOnClickListener(this);
findViewById(R.id.btnListActivityAdapter).setOnClickListener(this);
}
}
Classe Smile:
public class Smile {
public static final int FELIZ = 0;
public static final int TRISTE = 1;
public static final int LOUCO = 2;
public String nome;
public final int tipo;
public Smile(String nome, int tipo) {
this.nome = nome;
this.tipo = tipo;
}
public int getImagem() {
switch (tipo) {
case FELIZ: return R.drawable.feliz;
case TRISTE: return R.drawable.triste;
case LOUCO: return R.drawable.louco;
}
return R.drawable.naoencontrado;
}
}
Classe SmileAdapter:
public class SmileAdapter extends BaseAdapter {
private Context context;
private List<Smile> lista;
public SmileAdapter(Context context, List<Smile> lista) {
this.context = context;
this.lista = lista;
}
@Override
public int getCount() {
return lista.size();
}
@Override
public Object getItem(int position) {
return lista.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@SuppressLint("ViewHolder")
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Smile smile = lista.get(position);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.activity_item_lista, null);
ImageView img = (ImageView) view.findViewById(R.id.img);
img.setImageResource(smile.getImagem());
TextView text = (TextView) view.findViewById(R.id.nome);
text.setText(smile.nome);
return view;
}
}
E por último a classe ActivityCicloVidaUtils:
public class ActivityCicloVidaUtil {
public static void mensagem(Context context, String mensagem) {
Toast.makeText(context, mensagem, Toast.LENGTH_SHORT).show();
}
}
Prints do app:
Link do projeto completo: http://www.4shared.com/rar/1L_Ivw9oce/ActivityCicloVida.html
Até a proxima!
0 comentários:
Postar um comentário