Android Activity. Ivan Nicoli

Documentos relacionados
Módulo 2 - Novas Activities Android. Programação Orientada a Objetos Prof. Rone Ilídio - UFSJ

Android Banco de Dados. Ivan Nicoli

Android Layout Manager. Ivan Nicoli

Programação para Dispositivos Móveis

Tutorial Android Speech

Comunicação entre A0vidades

Computação Móvel Activity (Ref. Cap. 4)

Login. Criar uma nova Activity. Login. Luiz Eduardo Guarino de Vasconcelos

Módulo 3 - Intenções. SECAP 2014 Prof. Rone Ilídio - UFSJ

Retrofit. Criar um novo projeto. Selecionar a API. Retrofit para consumir Web Service Luiz Eduardo Guarino de Vasconcelos

2ª Edição Ricardo R. Lecheta

Firebase. Acesse o site Acesse o menu Go to Console. Acesse com uma conta Google ou crie uma conta.

Prof: Ricardo Quintão Site:

PROPOSTA DE UM PADRÃO DE PROJETO PARA ANDROID UTILIZANDO A WEB

Tutorial sobre Activity: Como carregar um fragmento do mapa para a tela do celular

Programação de Dispositivos Móveis

Programa de Dispositivos Móveis

Programação para Dispositivos Móveis. Activity e Intent

Introdução ao Android. SECAP 2014 Prof. Rone Ilídio - UFSJ

Programação para Android. Aula 05: Estilos e temas; galeria de imagens

Desenvolvimento para Android Prá9ca 2. Prof. Markus Endler

Desenvolvimento para Android Prá3ca 3. Prof. Markus Endler

TUTORIAL ANDROID ACTIVITY - CONSTRUÇÃO DE TELAS

Android Core. Felipe Silveira felipesilveira.com.br. Aula 6

Programação para Android. Aula 08: Persistência de dados SQL

Desenvolvimento de um aplicativo básico usando o Google Android

Introdução ao Android. Programação Orientada a Objetos Prof. Rone Ilídio - UFSJ

Android DEFINIÇÕES E CICLO DE VIDA. Prof. Dr. Joaquim assunção.

Programação para Android. Aula 06: Activity, menus e action bar

Programação de Dispositivos Móveis

Programação para a Plataforma Android Aula 17. Broadcasts

Programação para Dispositivos Móveis. Banco de Dados (SQLite)

Módulo 4 - Interface Gráfica Gerenciadores de Layout. Programação Orientada a Objetos Prof. Rone Ilídio - UFSJ

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

============================== Exemplo ListView MainActivity.java

Programa de Dispositivos Móveis

Programação para a Plataforma Android Aula 16. Fragmentos

Projeto GoHome Tutorial Sobre o serviço do Google Maps no Android

Introdução ao Desenvolvimento para Sistema Operacional Android

Android I N T R O D U Ç Ã O À P R O G R A M A Ç Ã O P R O F E S S O R L E O N A R D O C. R. S O A R E S - L A R B A C K

Desenvolvimento Android.

Apresentação de um Processo Cria4vo de Desenvolvimento de uma App Android. Realização de Dinâmica Hands- On para Construção de uma App Android

Introdução ao Google Android

Desenvolvimento com Android Studio. Aula 02 Widgets, Manipulação de Dados e Programação de Eventos

Programação para Dispositivos Móveis

Log, Ciclo de Vida e Diálogos. Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br)

Desenvolvimento de um aplicativo básico usando o Google Android

Computação Móvel Conceitos Básicos do Android Ref. Capítulo 3

Google Android. Uma abordagem prática e didática. Rafael Guimarães Sakurai. Esse livro está à venda em

Programação para a Plataforma Android Aula 4. Objetos Gráficos

Capítulo 02: Cadastro de Alunos

HCI Summer Workshop. Android #1. Tiago Guerreiro.

Programação para a Plataforma Android Aula 11. Banco de Dados

Programação para a Plataforma Android Aula 7. Mul$mídia

Introdução ao Android

Armazenamento Persistente de Dados

Escrito por Neri Neitzke Qua, 12 de Outubro de :40 - Última atualização Seg, 26 de Março de :50

( TIAGO DOS SANTOS MENDES ) PROGRAMAÇÃO DISPOSITIVOS MOVEIS ANDROID STUDIO

PROGRAMAÇÃO COM ANDROID NA ÁREA DA ENGENHARIA CARTOGRÁFICA: ALGUNS EXEMPLOS

Programação para Android. Aula 10: Acesso a câmera, sms e recursos do aparelho

Exemplo de Aplicaça o Facebook

Computação Móvel ActionBar e Temas (Ref. Cap. 5)

Mini Curso Android. Rodrigo Lopes Ferreira.

Provedores de Conteúdo

Tutorial de utilização da aplicação no lado servidor com Firebase

1. SQLite No Android 2. API de Acesso Listagem 1 SQLiteDatabase SQLiteOpenHelper Listagem 1 Android Studio SQLiteOpenHelper Android Studio

Computação II Orientação a Objetos

AULA 2. Minicurso PET-EE UFRN

Primeira Aplicação Android Olá Mundo. Prof. Fellipe Aleixo

Android OLÁ MUNDO MÓVEL. Prof. Dr. Joaquim assunção.

INTRODUÇÃO À PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS. ADS 6º Período

Transcrição:

Android Activity Ivan Nicoli

Activity Representa a tela de uma aplicação Classe filha da classe android.app.activity Deve ser declarada sempre no AndroidManifest.xml Obrigatória a implementação do método oncreate(bundle) e neste método é obrigatória a chamada do método setcontentview(view)

Navegação entre telas A navegação entre Activities (Telas) se dá por meio de um Intent. Existem dois métodos que permitem a chamada de novas Activities: startactivity(intent): Abre uma Activity de maneira independente. startactivityforresult(intent, codigo): Abre uma Activity aguardando um retorno

Exercício 1 Navegação (1/4) Crie um novo projeto no Eclipse, parâmetros: ProjectName: ExemplosActivity Target: Google Apis (Plataform 2.2) Package Name: br.edu.facear.exemplosactivity Activity: Desmarque a opção de criação.

Exercício 1 Navegação (2/4) Crie duas novas classes que herdam a classe Activity, com os nomes: Tela1Activity Tela2Activity Adicione a declaração de ambas no AndroidManifest.xml Adicione o category do tipo LAUNCHER no Intent da Activity Tela1Activity.

Exercício 1 Navegação (3/4) Na Activity Tela1Activity adicione a seguinte implementação do método oncreate(bundle): @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); Button b = new Button(this); b.settext("clique aqui para ir a próxima tela"); b.setonclicklistener(this); setcontentview(b); } Faça com que a Activity implemente a Interface OnClickListener e adicione o seguinte método na mesma: public void onclick(view arg0) { Intent i = new Intent(this,Tela2Activity.class); startactivity(i); }

Exercício 1 Navegação (4/4) Na Activity Tela2Activity adicione a seguinte implementação do método oncreate(bundle): @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); TextView tv = new TextView(this); tv.settext("olá, Seja bem Vindo!"); setcontentview(tv); } Execute a aplicação.

Passagem de parâmetros entre Activities A passagem de parâmetros entre Activities é realizada por meio de um Objeto da classe android.os.bundle Este objeto se comporta de maneira semelhante a uma HashMap do Java por meio do padrão "chave x valor". Para adicionar os parâmetros, são utilizados os métodos putstring, putdouble, putint, putboolean, putchar, dentre outros...

Exercício 2 Parâmetros (1/2) Altere o método onclick da classe Tela1Activity adicionando as linhas de passagem de parâmetros: public void onclick(view arg0) { Intent i = new Intent(this, Tela2Activity.class); Bundle b = new Bundle(); b.putstring("nome", "Ivan"); i.putextras(b); } startactivity(i);

Exercício 2 Parâmetros (2/2) Altere o método oncreate(bundle) da classe Tela2Activity adicionando as linhas de obtenção de parâmetros: @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); TextView tv = new TextView(this); Intent i = getintent(); tv.settext("olá, seja bem vindo "+ i.getextras().getstring("nome")); } this.setcontentview(tv);

Passagem de Parâmetros 2 Para simplificar o código é possível chamar o método putextra(chave, tipo) diretamente do objeto que será passado para o método startactivity Da mesma maneira na Activity destino é possível chamar o Método getextras<tipo>(chave), para se obter o valor, exemplo: getintent().getstringextra("nome")

Exercício 3 Parâmetros 2 (1/2) Altere o método onclick da classe Tela1Activity para simplificar a passagem de parâmetros: public void onclick(view arg0) { Intent i = new Intent(this, Tela2Activity.class); i.putextra("nome", "Ivan"); } startactivity(i);

Exercício 3 Parâmetros 2 (2/2) Altere o método oncreate(bundle) da classe Tela2Activity para simplificar a obtenção de parâmetros: @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); TextView tv = new TextView(this); tv.settext("olá, seja bem vindo "+ getintent().getstringextra("nome")); } this.setcontentview(tv);

ListActivity exibição de uma lista de itens na tela Subclasse da classe Activity. Utilizada para simplificar a construção de telas com o objetivo de exibir uma lista de itens. Não é necessário chamar o método setcontentview, pois este já é chamado internamente. É necessário chamar o método setlistadapter(listadapter) Possui métodos que facilitam a captura de eventos bem como os elementos selecionados, é o caso do método onlistitemclick()

Exercício 4 - Criando uma lista de Nomes Crie uma nova classe chamada ListNomesActivity que herde a classe android.app.listactivity e adicione a seguinte implementação: @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); String[] nomes = new String[] {"Nome 1", "Nome 2", "Nome 3"}; ArrayAdapter<String> arrayadapter = new ArrayAdapter<String>(this, android.r.layout.simple_list_item_1, nomes); setlistadapter(arrayadapter); } @Override protected void onlistitemclick(listview l, View v, int position, long id) { super.onlistitemclick(l, v, position, id); Toast.makeText(this, "Foi selecionado o item " + this.getlistadapter().getitem(position).tostring(), Toast.LENGTH_SHORT); }

Exercício 5 Menu de Activities Crie uma nova classe que herde a classe ListActivity, chamada ListMenuActivity. Simplifique a declaração de Activities no AndroidManifest.xml, deixando-as no seguinte padrão: <activity android:name=".tela1activity"></activity> Crie um menu para cada uma das Activities: ListNomesActivity, Tela1Activity, Tela2Activity. Crie um elemento Sair: Quando chamado, a implementação deste elemento deve ser simplesmente a invocação do método finish() da classe Activity

SimpleCursorAdapter Assim como o ArrayAdapter o SimpleCursorAdapter é outra implementação da classe ListAdapter Pode ser associada a uma ActivityList se passado como parâmetro para o método setlistadapter. Mapea colunas de Cursor com um determinado elemento de um layout XML. Um Cursor é semelhante a um ResultSet do JDBC. Utilizando-se da interface Cursor é possível percorrer registros, como, por exemplo, a lista de contatos do celular ou o retorno de um banco de dados.

Exercício 6 Acessando Contatos (1/2) Crie uma nova classe que herde a classe ListActivity, chamada ListaContatosActivity. Altere a classe MenuActivity para que seja possível abrir esta atividade. No arquivo AndroidManifest.xml, adicione a declaração: <uses-permission android:name="android.permission.read_contacts"/> Copie o arquivo res/layout/main.xml e cole renomeando para res/layout/contatos.xml. Adicione o atributo android:id="@+id/nome" na tag TextView do arquivo res/layout/contatos.xml e remova o atributo android:text="@string/hello"

Exercício 6 Acessando Contatos (2/2) Na classe ListaContatosActivity, adicione a seguinte implementação: ListAdapter adapter; @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); Uri uri = ContactsContract.Contacts.CONTENT_URI; Cursor c = getcontentresolver().query(uri, null, null, null, null); startmanagingcursor(c); String[] colunas = new String[] {ContactsContract.Contacts.DISPLAY_NAME}; int[] campos = new int[] {R.id.nome}; adapter = new SimpleCursorAdapter(this, R.layout.contatos, c, colunas, campos); setlistadapter(adapter); } @Override protected void onlistitemclick(listview l, View v, int position, long id) { super.onlistitemclick(l, v, position, id); Cursor c = (Cursor) adapter.getitem(position); String nomecoluna = ContactsContract.Contacts.DISPLAY_NAME; String nome = c.getstring(c.getcolumnindexorthrow(nomecoluna)); Toast.makeText(this, "Contato Selecionado : " + nome, Toast.LENGTH_SHORT).show(); }

SimpleAdapter Exibição de valores fixos em uma lista SimpleAdapter é outra implementação de um ListAdapter. O SimpleAdapter recebe como parâmetro uma lista java.util.list. Cada item da lista deve ser entendido como uma linha da View. Cada linha da Lista fornecida ao SimpleAdapter deve possuir um HashMap cujas chaves devem estar mapeadas com os ids dos componentes da tela.

SimpleAdapter Exibição de valores fixos em uma lista Chave1 Valor1 Chave2 Valor2 Chave1 Valor3 Chave2 Valor4 Chave1 Valor5 Chave2 Valor6 Chave1 Nome1 Chave2 Nome2 XML Nome1, Nome2 java.util.hashmap java.util.list

Exercício 7 ListActivity com SimpleAdapter (1/2) Crie uma nova classe, chamada ListSimpleAdapterActivity que seja filha da classe ListActivity. Altere a classe MenuActivity para que seja possível abrir esta atividade. Adicione a nova atividade no arquivo AndroidManifest.xml

Exercício 7 ListActivity com SimpleAdapter (1/2) Na implementação da classe ListSimpleAdapterActiviy, adicione: @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>(); for (int i = 0; i < 10; i++) { HashMap<String, String> item = new HashMap<String, String>(); item.put("nome", "Nome " + i); item.put("fone", "Fone " + i); list.add(item); } String[] from = new String[] {"nome", "fone"}; int[] to = new int[] {android.r.id.text1, android.r.id.text2}; setlistadapter(new SimpleAdapter(this, list, android.r.layout.two_line_list_item, from, to)); } @Override protected void onlistitemclick(listview l, View v, int position, long id) { super.onlistitemclick(l, v, position, id); Toast.makeText(this, "Você selecionou o elemento: " + this.getlistadapter().getitem(position).tostring(), Toast.LENGTH_SHORT).show(); }

Exercício 8 SimpleAdapter com XML customizado Crie uma classe chamada ListSimpleAdapter2Activity que seja filha da classe ListActivity Copie o arquivo res/layout/contatos.xml e cole renomeando para contatos_simple_adapter.xml Copie o TextView e cole duas vezes totalizando 3 componentes TextView. Adicione o atributo android:id="@+id/nome" no primeiro e android:id="@+id/fone" no último Remova o atributo android:id no TextView do meio e adicione o atributo android:text=" - " Altere o atributo android:orientation do LinearLayout para horizontal. Altere todas os atributos de TextView de android:layout_width="fill_parent" para android:layout_width="wrap_content" Implemente a classe ListSimpleAdapter2Activity de forma que funcione de forma semelhante a classe ListSimpleAdapterActivity

MapActivity Assim como a classe android.app.listactivity a classe com.google.android.maps.mapactivity também é filha da classe Activity. Ela foi criada com o intuito de simplificar a criação de uma aplicação que se integra com o Google Maps. A criação de uma Activity que acessa o Google Maps difere em dois pontos da criação de uma Activity Normal: É necessário criar uma classe filha da classe MapActivity ao invés da classe Activity O método setcontentview deve receber um MapView

Exercício 9 Mapa Facear (1/3) Para utilizar o MapView é necessário utilizar um código do GoogleMaps que é obtido pelo md5 do certificado da aplicação. Para fins de desenvolvimento o Eclipse gera um certificado digital automaticamente (Não é possível publicar um aplicativo com este certificado no GooglePlay), para visualizá-lo acesse o diretório presente em Windows>Preferences>Android>Build Abra um prompt de comando e digite o comando: keytool -list -alias androiddebugkey -keystore <path_to_debug_keystore>.keystore -storepass android -keypass android Acesse o endereço: http://code.google.com/android/maps-api-signup.html Adicione seu Certificate fingerprint (MD5) e clique em Generate API KEY

Exercício 9 Mapa Facear (2/3) Crie uma nova classe filha de MapActivity, adicione a seguinte implementação: @Override protected void oncreate(bundle icicle) { super.oncreate(icicle); MapView map = new MapView(this, "0wKikE_9QhXqX6w3nlDP71NU52m55LxDh50Bo4A"); MapController mc = map.getcontroller(); mc.setzoom(20); double latitude = -25.538814*1E6; double longitude = -49.362275*1E6; GeoPoint point = new GeoPoint((int)latitude, (int)longitude); mc.setcenter(point); map.setsatellite(true); map.setclickable(true); this.setcontentview(map); }

Exercício 9 Mapa Facear (3/3) No arquivo AndroidManifest.xml, adicione, dentro da tag <application> a entrada: <uses-library android:name="com.google.android.maps"/> No mesmo arquivo, dentro da tag <manifest>, adicione a entrada: <uses-permission android:name="android.permission.internet"/> Tome as demais medidas de forma que a Activity se torne funcional

Exercício 10 Torre Eiffel Crie um MapActivity, utilizando a sugestão do gerador de códigos do GoogleMaps: <com.google.android.maps.mapview android:layout_width="fill_parent" android:layout_height="fill_parent" android:apikey="0wkike_9qhxqx6w3nldp71nu52m55lxdh50bo4a" /> Que traga a imagem da Torre Eiffel.

Fim