Aprenda Sobre Activity

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);
       
    }

}

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();
       
    }
   
}

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);
       
    }
   
}

 Código das classes Smile e SmileAdapter:

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! 

Inscreva-se para receber


0 comentários:

Postar um comentário

.