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

Documentos relacionados
Android Layout Manager. Ivan Nicoli

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

Programação de Dispositivos Móveis

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

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

Views Interface Gráfica

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

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

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

Curso de Android - 2 Novas Activities. SECAP Prof. Rone Ilídio - UFSJ

Prof. Jhonatan Fernando

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

Programação para Dispositivos Móveis

Android Banco de Dados. Ivan Nicoli

AULA 2. Minicurso PET-EE UFRN

Construindo layouts complexos em Android

Programação para Android

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

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

Programação para Dispositivos Móveis

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

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

Criando as primeiras telas (Activity)

Programa de Dispositivos Móveis

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

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

Desenvolvimento com Android Studio Aula 01 Instalação e Configuração do Ambiente de Desenvolvimento, Estrutura de um projeto Android

Comunicação entre A0vidades

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

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

Programação de Dispositivos Móveis

Fragments. Criar um novo projeto. Selecionar a API. Navigation Drawer Activity. Fragments. Luiz Eduardo Guarino de Vasconcelos

Android INTERFACE GRÁFICA & LAYOUT. Prof. Dr. Joaquim assunção.

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

Desenvolvimento Android.

Trabalhando com Mensagens. File > New > New Project. Uso de mensagens (Toast) Luiz Eduardo Guarino de Vasconcelos

Computação Móvel Gerenciadores de Layout (Ref. Cap. 6)

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

Android: Ciclo de vida da Activity

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

Provedores de Conteúdo

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

Google Android. Uma abordagem prática e didática. Rafael Guimarães Sakurai, Diogo Carleto, erodrigo Cascarrolho

Mais Elementos da Interface com o Usuário. Prof. Fellipe Aleixo

Android. Interfaces: widgets

Tutorial Android Speech

Google Android. Componentes Gráficos

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

Mensagens. Para conhecimento. Renomear arquivos. Botão Direito no arquivo > Rafactor > Rename Shift + F6

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

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

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

Armazenamento Persistente de Dados

Programa de Dispositivos Móveis

Desenvolvimento de Aplicativos Android

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

Android Binding. Implementando o padrão de projeto MVVM com MVVM_. Saiba como criar um projeto utilizando o padrão de projeto MVVM no Android

Programação para Dispositivos Móveis

Universidade Federal do Paraná

Prof: Ricardo Quintão Site:

Introdução ao Android

Introdução ao Desenvolvimento para Sistema Operacional Android

AlarmManager. Programação em Dispositivos Móveis (PDM) Centro de Cálculo Instituto Superior de Engenharia de Lisboa

Introdução ao Android

Android. Interfaces: widgets

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

Desenvolvimento Android. Pontapé inicial...

ANDROID APPLICATION PROJECT

Programando Intenções. Prof. Fellipe Aleixo

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

Google. Ricardo R. Lecheta. Aprenda a criar aplicações para dispositivos móveis com o Android SDK. Novatec

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

GERENCIADOR DE CONTEÚDO

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

6ª Edição. De : Luciano Alves da Silva (lucianopascal@yahoo.com.br) ApostilaDeAndroid. Rio de Janeiro - Outubro 2013

EA998 Tópicos em Engenharia de Computação MC933 Tópicos Especiais em Ciência da Computação Android: Interface com o Usuário

Programação para a Plataforma Android Aula 13. Localização

Word 1 - Introdução Principais recursos do word A janela de documento Tela principal

Facebook Instruções de integração com PayPal

Programando Passo-a-Passo 2ª Edição De : Luciano Alves (lucianopascal@yahoo.com.br)

Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas

Curso: Especializado Desenvolvimento de Aplicações para Android

Computação II Orientação a Objetos

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

CONTEÚDO (técnico) COMPLETO DO TREINAMENTO INTENSIVO PARA ANDROID Universidade Android

Sistema de Gerenciamento Remoto

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

Definições de Projeto

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

Prof: Ricardo Quintão Site:

Casa do Código Livros para o programador Rua Vergueiro, º andar Vila Mariana São Paulo SP Brasil

Tutorial WEB CONTENT MANAGEMENT [WCM] Obtenha benefícios a partir das aplicações customizadas da ADMT.

Exemplo 1. Um programa que cria uma instância de uma classe que herda da classe Frame

ANDROID APRENDIZ. Um guia para iniciantes Crie seu primeiro aplicativo Android

Introdução à Programação Android

PROGRAMAÇÃO MOBILE Estudo de Caso

Fluxo de trabalho do Capture Pro Software: Indexação de código de barras e separação de documentos

Manual PAINT.NET de imagens

itec h- ON & E ngenharia de S oftware Joel Carvalho - 05/05/2011 Novas Tecnologias Aplicadas à Eng. de So5.

Tutorial de Computação Introdução a Programação Gráfica em Java para MEC1100 v

Transcrição:

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

Classe View Todos os componente gráficos são filhos de View Para se criar um novo componente basta estender View e implementar o método ondraw (Canvas) que é responsável por desenhar o componente na tela. Dois tipos de componentes: Widgets: filhos de view (Button, ImageView, etc) Layouts: filhos de android.view.viewgroup (filha de View), são gerenciadores de layout

Gerenciadores de Layout Principais layouts AbsolutLayout: cada componente possuirá uma posição X,Y FrameLayout: um componente ocupando a tela inteira LinearLayout: componentes organizados na vertical ou horizontal TableLayout: organizados em forma de coluna e linhas RelativeLayout: um componente relativo a outro

Gerenciadores de Layout Para alterar o layout: Clique com o botão direito sobre a tela da aplicação Escolha Change Layout... Escolhe o layout

Gerenciadores de Layout Deve-se configurar a largura e a altura do layout principal e de cada componente Duas configurações: android:layout_height: altura do componente/view android:layout_width: largura do componente/view Esses parâmetros recebem os seguintes valores: Número: número de pixels fill_parent: ocupa todo o espaço Wrap_content: ocupa apenas o espaço necessário

ScrollView ScrollView é um gerenciador de layout que permite a criação de barra de rolagem, tanto horizontal como vertical Funciona em conjunto com outro gerenciador de layout (que trabalha dentro do ScrollView) Veja exemplo

ScrollView Crie um novo projeto Escolha uma API 4.1 Modifique o Layout para ScrollView Insira um layout LinearLayout (vertical) Modifique seu nome para linearlayout1 Insira o seguinte código na ActivityMain

ScrollView public class MainActivity extends Activity { @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); LinearLayout layout = (LinearLayout)findViewById(R.id.linearlayout1); for(int i=0; i<100; i++){ TextView text = new TextView(this); text.setlayoutparams( new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); text.settext("texto:"+i); layout.addview(text);

ScrollView Obtém o layout: LinearLayout layout = (LinearLayout) findviewbyid(r.id.linearlayout1); Cria um TextView e insere no layout TextView text = new TextView(this); text.setlayoutparams(new LayoutParams(LayoutParams. WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); Insere o textview no layout layout.addview(text);

Resultado

GridView Utilizado para visualizações em forma de tabela (linhas e colunas) Utilização clássica: álbum de fotos. Parâmetros importantes: android:numcolumns: número de colunas; auto_fit define o número de colunas automaticamente, de acordo com a largura da coluna android:columnwidth= 200px : largura de cada coluna

GridView Para exibir imagens é necessário criar um ListAdapter com as imagens necessárias Para criá-lo deve-se criar um classe filha da classe abastrata android.widget.baseadapter Deve-se implementar seus métodos, de forma que o método getview(int posicao, View v, ViewGroup parent) retorna um ImageView Exemplo: exibe uma tabela com imagens As imagens devem estar na pasta \res\drawable-mdpi Crie um novo projeto Crie a classe filha de BaseAdapter

GridView A interface gráfica deve ter um componente do tipo GridView (guia Composite) Configure o GridView da seguinte forma: <GridView android:id="@+id/gridview1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:columnwidth="200px" android:gravity="center" android:numcolumns="auto_fit" >

public class AdaptadorImagem extends BaseAdapter{ private Context ctx; private final int[] images; private final LayoutParams params; public AdaptadorImagem(Context c, int[] imagens, LayoutParams params){ ctx = c; images = imagens; this.params = params; public int getcount() { return images.length; public Object getitem(int arg0) { return null; public long getitemid(int arg0) { return 0; public View getview(int posicao, View convertview, ViewGroup parent) { ImageView img = new ImageView(ctx); img.setimageresource(images[posicao]); img.setadjustviewbounds(true); img.setlayoutparams(params); return img;

public class MainActivity extends Activity implements OnItemClickListener{ private int[] imagens = {R.drawable.testefigura,R.drawable.ic_launcher,; public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); GridView grid = (GridView)findViewById(R.id.gridView1); grid.setadapter(new AdaptadorImagem(this, imagens, new GridView.LayoutParams(30,30))); grid.setonitemclicklistener(this); public void onitemclick(adapterview av, View v, int posicao, long id) { Toast.makeText(MainActivity.this, "Imagem selecionada:" + posicao, Toast.LENGTH_LONG).show();

Gallery Semelhante ao GridView

Aplicação com várias guias Utilizando o TabHost

Utilizando Várias Guias Criação de uma tela contendo várias guias Activity principal: TabActivity O xml associado à activity principal possui um layout do tipo TabHost Cada guia é uma activity, com seu xml próprio A activity principal faz a união de todas as activities Passagem de informações entre activities por meio de variáveis estáticas

Crie a Classe Dados Essa classe possuirá somente variáveis estáticas public class Dados { public static String nome; public static String email; public static String curso; public static String periodo;

activity_main.xml <TabHost xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@android:id/tabhost" android:layout_width="match_parent" android:layout_height="match_parent" > <TabWidget android:id="@android:id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" > </TabWidget> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="match_parent" android:layout_height="match_parent" > </FrameLayout> </TabHost>

activity_main.xml TabHost Layout próprio para esse tipo de aplicação com guias Deve ter: TabWidget e FrameLayout TabWidget representa as abas de cada guia FrameLayout Layout que receberá as activities

ActivityMain.java public class MainActivity extends TabActivity implements OnTabChangeListener { @Override public void oncreate(bundle icicle) { super.oncreate(icicle); // gettabhost() é da TabActivity TabHost tabhost = gettabhost(); tabhost.setup(); tabhost.setontabchangedlistener(this); // Tab 1 (abrir com Intent -> Activity Tab1.class) TabSpec tab1 = tabhost.newtabspec("id1"); //Identificador da tab tab1.setindicator("guia 1", getresources().getdrawable(r.drawable.circulo)); tab1.setcontent(new Intent(this, Tab1.class)); tabhost.addtab(tab1); // Tab 2 TabSpec tab2 = tabhost.newtabspec("id2"); //Identificador da tab tab2.setindicator("guia 2", getresources().getdrawable(r.drawable.triangulo)); tab2.setcontent(new Intent(this, Tab2.class)); tabhost.addtab(tab2); //tabhost.setcurrenttabbytag("id1"); public void ontabchanged(string tabid) { Toast.makeText(this, "Tab:"+tabId, Toast.LENGTH_LONG).show();

ActivityMain.java TabActivity extends Activity TabHost Componente formado por várias guias tabhost.setup(): prepara para receber as guias addtab(): adiciona uma nova tab ao tabhost TabSpec uma guia setindicator: recebe o título e uma figura; setcontent: recebe uma intent com a activity a ser aberta. OnTabChangeListener Trata a mudança de tab Importante: colocar as figuras circulo.png e triangulo.png na pasta res/drawable-mdpi

activity_tab1.xml Crie a seguinte interface gráfica Utilize os nomes: etnome: 1º EditText etemail: 2º EditText

Tab1.java public class Tab1 extends Activity { @Override public void oncreate(bundle icicle) { super.oncreate(icicle); setcontentview(r.layout.activity_tab1); @Override protected void onresume() { super.onresume(); EditText ednome = (EditText)findViewById(R.id.etNome); ednome.settext(dados.nome); EditText edemail = (EditText)findViewById(R.id.etEmail); edemail.settext(dados.email); Continua...

Tab1.java @Override protected void onpause() { super.onpause(); EditText ednome = (EditText)findViewById(R.id.etNome); Dados.nome = ednome.gettext().tostring(); EditText edemail = (EditText)findViewById(R.id.etEmail); Dados.email = edemail.gettext().tostring();

Tab1.java onpause() Executado quando a guia perde o foco Salva as informações da tela em variáveis estáticas onresume() Executado quando o foco volta para a guia Pega as informações contidas nas variáveis estáticas e coloca nas caixas de texto

activity_tab2.xml Crie a seguinte interface gráfica Utilize os nomes: etcurso: 1º EditText etperiodo: 2º EditText

Tab2.java public class Tab2 extends Activity implements OnClickListener{ @Override public void oncreate(bundle icicle){ super.oncreate(icicle); setcontentview(r.layout.activity_tab2); Button btnok = (Button)findViewById(R.id.button1); btnok.setonclicklistener(this); @Override protected void onresume() { super.onresume(); EditText edcurso = (EditText)findViewById(R.id.etCurso); edcurso.settext(dados.curso); EditText edperiodo= (EditText)findViewById(R.id.etPeriodo); edperiodo.settext(dados.periodo); Continua...

Tab2.java @Override protected void onpause() { super.onpause(); EditText edcurso = (EditText)findViewById(R.id.etCurso); Dados.curso = edcurso.gettext().tostring(); EditText edperiodo = (EditText)findViewById(R.id.etPeriodo); Dados.periodo = edperiodo.gettext().tostring(); @Override public void onclick(view v) { EditText edcurso = (EditText)findViewById(R.id.etCurso); Dados.curso = edcurso.gettext().tostring(); EditText edperiodo = (EditText)findViewById(R.id.etPeriodo); Dados.periodo = edperiodo.gettext().tostring(); Intent it = new Intent(v.getContext(),ResultadoActivity.class); startactivity(it); finish();

activity_resultado.xml Possui somente um TextView e um botão

ResultadoActivity.java public class ResultadoActivity extends Activity implements OnClickListener { public void oncreate(bundle icicle){ super.oncreate(icicle); setcontentview(r.layout.activity_resultado); TextView tvdado = (TextView)findViewById(R.id.tvResultado); tvdado.settext(dados.nome+" "+Dados.email+" "+Dados.curso+" "+Dados.periodo); Button btn = (Button)findViewById(R.id.button1); btn.setonclicklistener(this); @Override public void onclick(view v) { finish();