ACTIVITY
• Uma Activity (atividade) representa uma interface
de usuário no Android.
• Toda interface de usuário de sua aplicação será
herdada da classe abstrata Activity.
• Utiliza-se de componentes para criar interfaces de
usuário que mostram informações e respondem a
usuário que mostram informações e respondem a
ações do usuário.
• Em um projeto real, provavelmente você usará
varias activitys, onde cada uma representará uma
janela.
• É um dos componentes Android mais utilizados
em uma aplicação.
ACTIVITY - EXEMPLO
package br.com.cassic.treinamento;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.main);
} }
ACTIVITY
• O método onCreate(Bundle) deve ser SEMPRE
implementado em uma activity e sempre será
o primeiro método a ser executado quando
uma activity for iniciada.
• A chamada do método setContentView(View)
SEMPRE deve estar presente no método
SEMPRE deve estar presente no método
onCreate(Bundle) de uma activity. Ele recebe
como parâmetro um objeto do tipo View, que
define a interface de usuário.
• Cada activity deve ser declarada no arquivo
AndroidManifest.xml.
ACTIVITY
LAYOUT
• O Android é bastante flexível em relação à criação de layouts.
• O layout das interfaces de usuário (janelas) podem ser feitas, no Android, de duas maneiras:
• Programaticamente, muito parecido com o SWING.
• Declarativamente, por meio de um arquivo XML.
• Declarativamente, por meio de um arquivo XML. • Neste curso criaremos as interfaces de forma
declarativa, via XML.
• Este arquivo de XML com o layout deve estar na pasta /res/layout.
LAYOUT - EXEMPLO
<?xml version="1.0" encoding="utf-8"?> <LinearLayout mlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello"/> </LinearLayout>
ANDROIDMANIFEST.XML
• O arquivo AndroidManifest.xml é o alicerce de
uma aplicação Android.
• Este arquivo deve estar na raiz da aplicação.
• Este arquivo serve para:
•
Descrever o contexto da aplicação;
•
Descrever o contexto da aplicação;
•
Activitys, Services, Content Providers e
Broadcast Receivers suportados pela
aplicação;
•
Permissões necessárias para a aplicação
utilizar os recursos de hardware e software.
•
Entre outras funções
ANDROIDMANIFEST.XML - EXEMPLO
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="br.com.cassic.treinamento" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="7" /><application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MainActivity" 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> </manifest>
A CLASSE R
• As interfaces de usuário podem ser criadas de
duas maneiras:
•
Programaticamente, de forma similar ao
SWING.
•
Ou declarativamente por xml, abordagem
que utilizaremos nesse curso.
que utilizaremos nesse curso.
• No final teremos um objeto do tipo View com
todos os componentes da interface de
usuário.
• Uma referência desse objeto do tipo View deve
ser passado para o método setContentView()
para que a interface de usuário seja criada.
A CLASSE R
• Para obter a referência de um objeto View criado por XML, utilizamos a classe R.
• A classe R é uma classe que possui métodos
estáticos com as referências de todos os objetos criados via XML.
• As estradas estáticas são criadas automaticamente • As estradas estáticas são criadas automaticamente
graças ao plugin ADT, instalado no eclipse.
• Toda alteração no XML, será automaticamente replicado na classe R.
• Esta classe NUNCA deve ser alterada manualmente. • Se acidentalmente, ou propositalmente, você apagar
A CLASSE R - EXEMPLO
package br.com.cassic.treinamento; public final class R {
public static final class attr { }
public static final class drawable {
public static final int icon=0x7f020000; }}
public static final class layout {
public static final int main=0x7f030000; }
public static final class string {
public static final int app_name=0x7f040001; public static final int hello=0x7f040000;
} }
ACESSANDO ELEMENTOS VISUAIS
• A classe R disponibiliza uma forma de acessar
uma referência de um objeto do tipo View, criado
a partir de um arquivo XML.
• Para utilizar essa referencia em um código Java,
deve ser criado um objeto do mesmo tipo.
• Para isso utilizamos o método findViewById(id),
• Para isso utilizamos o método findViewById(id),
onde o id é a referência disponibilizada pela
classe R do objeto a ser referenciado.
• SEMPRE deverá ser feito uma conversão (cast) do
objeto que está sendo referenciado.
ACESSANDO ELEMENTOS VISUAIS
package br.com.cassic.treinamento;
import android.app.Activity;
import android.os.Bundle;
import android.widget.EditText;
public class MainActivity extends Activity {
@Override @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.main);
EditText caixa_texto = (EditText) findViewById(R.id.caixa_texto); }
TRATAMENTO DE EVENTOS
• Quando desenvolvemos aplicativos, devemos sempre ter a preocupação de garantir que ela interaja com o usuário e atenda as suas expectativas.
• Para tanto, a plataforma Android disponibiliza uma grande quantidade de Listeners (ouvintes) para capturar eventos.
capturar eventos.
• O listener para capturar os eventos de um botão é o setOnClickListener(listener).
• Para usa-lo, deve-se primeiramente implementar
(implements) a interface OnClickListener, no caso de um botão.
• Ao implementar a interface OnClickListener será criado o método onClick(View), que será chamado automaticamente quando acontecer um evento.
TRATAMENTO DE EVENTOS
public class MainActivity extends Activity implements OnClickListener{ @Override
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button botao = (Button) findViewById(R.id.botao); botao.setOnClickListener(this);
botao.setOnClickListener(this); }
@Override
public void onClick(View v) {
// Implementar aqui o que fazer // quando acontecer um evento. }
LOGCAT
• O método System.out.println(), muito utilizado no Java para imprimir uma mensagem na tela, não funciona no Android (pelo menos não deveria).
• Isso porque na máquina virtual Dalvik o stdout e o stderr (System.out e System.err) redirecionam sua saída para a pasta /dev/null (é o que diz a
saída para a pasta /dev/null (é o que diz a documentação, mas na prática...).
• A classe Log permite que você crie logs de informação, debug, alertas e erro.
• Os logs funcionam de forma similar ao framework Log4J da Jakarta.
• Os logs são apresentados na ferramenta LogCat, que fica na perspectiva DDMS.
LOGCAT - EXEMPLO
public class MainActivity extends Activity
implements OnClickListener{
@Override
public void onCreate(Bundle
savedInstanceState) { savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.main);
Log.i("TAG", "Mensagem de Log"); }
EXERCÍCIO
1. Criar o nosso primeiro projeto Android (Projeto01).
2. Criar um layout com XML com os seguintes componentes: a) TextView - Label b) EditText – Textbox b) EditText – Textbox c) Button d) Button e) TextView – Label
EXERCÍCIO
3. Gerenciar o evento do clique do botão. Ao clicar no primeiro botão, o texto digitado no textbox deve ser exibido no segundo TextView (Label).
4. Exibir uma mensagem de log no LogCat quando o botão for clicado. Testar o método
botão for clicado. Testar o método System.out.println().
EXEMPLO – TRATANDO O CLICK NO BOTÃO
package ifce.aulas.projeto01; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView;public class Projeto01Activity extends Activity implements OnClickListener { @Override
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
EXEMPLO – TRATANDO O CLICK NO BOTÃO
setContentView(R.layout.main);
Button botao01 = (Button) findViewById(R.id.button1); botao01.setOnClickListener(this);
}
public void onClick(View v) { public void onClick(View v) {
EditText campoTexto01 = (EditText) findViewById(R.id.editText1); TextView texto01 = (TextView) findViewById(R.id.textView1);
texto01.setText(campoTexto01.getText()); Log.i("Evento", "Pressionei o botão 01"); }
BIBLIOGRAFIA
• Bruno Lopes A. Batista. Curso Android Módulo Básico. • Iury Teixeira. Google Android.