Android Layout Manager. Ivan Nicoli

Documentos relacionados
Views Interface Gráfica

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

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

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

Construindo layouts complexos em Android

Programa de Dispositivos Móveis

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

Programação para Dispositivos Móveis

Programação para Android

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

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

Programação de Dispositivos Móveis

Android Banco de Dados. Ivan Nicoli

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

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

AULA 2. Minicurso PET-EE UFRN

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

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

Comunicação entre A0vidades

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

Google Android. Componentes Gráficos

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

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

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

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

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

Tutorial Android Speech

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

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

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 Desenvolvimento para Sistema Operacional Android

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

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

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

Programação de Dispositivos Móveis

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

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

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

Prof. Jhonatan Fernando

Voltado para novos usuários, este capítulo fornece uma instrução para edição de Leiaute do SILAS e suas funções.

Introdução ao Android

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

Programação para Dispositivos Móveis

Android Activity. Ivan Nicoli

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

FRWTC-400 DESENVOLVIMENTO MÓVEL PARA ANDROID MÓDULO 1

Introdução ao Android SDK. Prof. Me. Hélio Esperidião

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

Desenvolvimento Android.

Android. Interfaces: widgets

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

Curso: Especializado Desenvolvimento de Aplicações para Android

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

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

Prof: Ricardo Quintão Site:

Desenvolvimento de Aplicações. Android. Rick Rogers, John Lombardo, Zigurd Mednieks e Blake Meike. Novatec

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

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

Provedores de Conteúdo

HCI Summer Workshop. Android #1. Tiago Guerreiro.

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

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

Programação para Dispositivos Móveis

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

Desenvolvimento Android. Pontapé inicial...

Tutorial Plone 4. Manutenção de Sites. Universidade Federal de São Carlos Departamento de Sistemas Web Todos os direitos reservados

Programa de Dispositivos Móveis

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

Computação II Orientação a Objetos

Android Básico Hello World!

Manual de Utilização do PLONE (Gerenciador de página pessoal)

Acima temos a tela inicial do programa. USANDO O PHTOFILTER

Capítulo 04: Persistência com SQLite

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

LIÇÃO 42: APLICAÇÃO SIMPLES CLP-IHM. Projeto botão na IHM que aciona uma saída do CLP. Vá em menu > File > New. Nome do projeto

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

Introdução à Programação Android

Tema UFPel 2.0 WP Institucional Guia de Opções de Personalização

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

Dois novos relatórios estão disponíveis nesta versão do Imobiliária 21. São eles: Devedores e Imóvel por Área. Veja abaixo como emitir cada um.

a) Crie 3 novos layers: margem (neste exemplo foi utilizada cor 30), vp e cotas.

Banco de Dados BrOffice Base

GERENCIADOR DE CONTEÚDO

Transcrição:

Android Layout Manager Ivan Nicoli

Classe View A classe android.view.view é a classe mãe de todos os componentes visuais do Android. Qualquer desenvolvedor pode criar seu próprio componente herdando a classe View e implementando o método ondraw(canvas). Existem dois tipos de componentes visuais: Widgets. Ex: Buttons, ImageView, TextView... Layout Manager: Ex: LinearLayout, AbsoluteLayout, TableLayout... Os gerenciadores de layout são filhos de uma subclasse da classe View. A classe ViewGroup.

FrameLayout É o layout manager mais simples de todos. Cada componente é adicionado em um novo Frame na tela. O primeiro adicionado ficará no fundo da tela os demais ficarão por cima dele. Atualmente pode ser substituído pela tag merge com algumas otimizações.

Exercício 1 FrameLayout (1/2) Crie um projeto chamado ExplorandoLayoutManager. Crie um MenuActivity do tipo ListActivity e adicione o menu Exemplo Frame Layout e Sair. Crie uma Activity chamada FrameLayoutActivity. Sua implementação deve simplesmente chamar o arquivo xml R.layout.framelayout. Adicione uma imagem chamada paisagem.jpg na pasta res/drawable-hdpi.

Exercício 1 FrameLayout (2/2) Adicione a seguinte implementação no arquivo framelayout.xml: <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageView android:layout_width="fill_parent" android:layout_height="fill_parent" android:contentdescription="@string/paisagem" android:src="@drawable/paisagem" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/paisagem" android:layout_gravity="center" android:padding="12dp" android:background="#aa000000"/> </FrameLayout>

LinearLayout Layout padrão do Android. Organiza os componentes de forma horizontal ou vertical. Os componentes internos podem ser alinhados pelo atributo android:layout_gravity. O tamanho de cada componente pode ser proporcional ao atributo layout_weight com relação aos demais componentes da tela.

TableLayout Para solucionar problemas como: manter a proporção entre diversos componentes do tipo LinearLayout numa mesma tela. Foi criado o LayoutManager TableLayout. TableLayout é uma classe filha do LinearLayout. O TableLayout é um LinearLayout vertical. Em sua construção, aninhados ao TableLayout serão adicionados vários componentes do Tipo TableRow. O componente TableRow também é uma classe filha de LinearLayout. TableRow é um LinearLayout horizontal. A vantagem desta junção é que é mantida a proporcionalidade entre as colunas de vários componentes TableRow dentro de um TableLayout

Exercício 2 - TableLayout Reconstrua o Layout da Calculadora utilizando o TableLayout. Disposição dos componentes: Console Botão Limpar 7, 8, 9, / 4, 5, 6, * 1, 2, 3, -., 0, =, + (Optativo) Construa o mesmo layout utilizando o LinearLayout e veja a desproporcionalidade entre os tamanhos dos botões.

TableLayout Dois atributos importantes do LayoutManager TableLayout, são: android:shrinkcolumns: Permite que as colunas especificadas sejam comprimidas de forma que ocorra quebras de linha, se necessário, para exibição do texto. android:stretchcolumns: Permite especificar quais colunas devem ser esticadas para que a linha ocupe todo o espaço. Exemplos de especificação: android:stretchcolumns= 0,1 para as colunas 1 e 2 ou android:stretchcolumns= * para todas as colunas.

Exercício 3 shrinkcolumns (1/2) Crie uma Activity ShrinkColumnsTL que realiza a chamada: setcontentview(r.layout.shrinkcolumnstl) Crei o arquivo shrinkcolumnstl.xml, com o seguinte conteúdo: <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:shrinkcolumns="1"> <TableRow > <TextView android:text="@string/texto_1"/> <TextView android:text="@string/texto_2_texto_2_texto_2_texto_2_"/> <TextView android:text="@string/texto_3"/> <TextView android:text="@string/texto_4"/> </TableRow> <TableRow > <TextView android:text="@string/texto_1"/> <TextView android:text="@string/texto_2"/> <TextView android:text="@string/texto_3"/> <TextView android:text="@string/texto_4"/> </TableRow> </TableLayout>

Exercício 3 shrinkcolumns (2/2) Adicione a Activity no menu da aplicação e no AndroidManifest.xml Execute e verifique o resultado. Adicione a tag TableLayout adicionando o atributo android:shrinkcolumns, como abaixo: <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:shrinkcolumns="1"> Verifique o resultado obtido. Observe que o texto foi quebrado para que fosse possível a visualização da linha.

Exercício 4 strecthcolumns (1/2) Crie uma Activity StretchColumnsTL que realiza a chamada: setcontentview(r.layout.stretchcolumnstl) Crei o arquivo stretchcolumnstl.xml, com o conteúdo: <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TableRow> <Button android:text="@string/texto_1" /> <Button android:text="@string/texto_2" /> <Button android:text="@string/texto_3" /> <Button android:text="@string/texto_4" /> </TableRow> <TableRow> <Button android:text="@string/texto_1" /> <Button android:text="@string/texto_2" /> <Button android:text="@string/texto_3" /> <Button android:text="@string/texto_4" /> </TableRow> </TableLayout>

Exercício 4 stretchcolumns (2/2) Adicione a Activity no menu da aplicação e no AndroidManifest.xml Execute e verifique o resultado. Adicione a tag TableLayout adicionando o atributo android:stretchcolumns, como abaixo: <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:stretchcolumns="1,2"> Verifique o resultado obtido. Observe que a largura dos componentes da segunda e da terceira coluna foram alterados preencher de toda a linha.

Exercício 5 Login Table Layout Crie uma Activity chamada LoginTL que realize a chamada: setcontentview(r.layout.logintl); Crie o arquivo logintl.xml e adicione o conteúdo a seguir: <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:stretchcolumns="1" > <TableRow> <TextView android:text="@string/usuario" /> <EditText android:inputtype="text" /> </TableRow> <TableRow> <TextView android:text="@string/senha" /> <EditText android:inputtype="text" android:password="true" /> </TableRow> <TableRow android:gravity="right"> <Button android:text="@string/login"/> </TableRow> </TableLayout>

RelativeLayout Permite posicionar componentes ao lado, abaixo ou acima de outro componente já existente, referenciado pelo id. Poderão ser utilizados os seguintes atributos para realizar um alinhamento relativo: android:layout_below android:layout_above android:layout_torightof android:layout_toleftof android:layout_alignleft android:layout_alignright android:layout_aligntop android:layout_alignbaseline

Exercício 6 Login RelativeLayout (1/2) Crie uma Activity chamada LoginRL que realiza a chamada setcontentview(r.layout.loginrl); Crie um arquivo loginrl.xml com o conteúdo: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/usuario" style="@style/componentesrl" android:text="@string/usuario" /> <TextView android:id="@+id/senha" style="@style/componentesrl" android:layout_below="@id/usuario" android:text="@string/senha" /> <EditText android:id="@+id/txtusuario" style="@style/textsrl" android:layout_torightof="@id/usuario" android:inputtype="text" /> <EditText android:id="@+id/txtsenha" style="@style/textsrl" android:layout_alignleft="@id/txtusuario" android:layout_below="@id/txtusuario" android:inputtype="text" android:password="true" /> <Button android:id="@+id/login" style="@style/componentesrl" android:layout_alignright="@id/txtsenha" android:layout_below="@id/txtsenha" android:text="@string/login" /> </RelativeLayout>

Exercício 6 Login RelativeLayout (2/2) Adicione a classe LoginRL no menu principal da aplicação e no AndroidManifest.xml Crie as definições de estilo: <style name="componentesrl"> <item name="android:layout_height">wrap_content</item> <item name="android:layout_width">wrap_content</item> <item name="android:padding">10dip</item> </style> <style name="textsrl" parent="componentesrl"> <item name="android:layout_width">fill_parent</item> </style>

AbsoluteLayout Layout que permite controlar a posição x e y exata em que o componente vai aparecer. Em diferentes dispositivos o mesmo aplicativo pode aparecer de forma diferente. Os atributos que controlam a posição do componente são: android:layout_x android:layout_y

Exercício 7 Login AbsoluteLayout (1/2) Crie uma Activity chamada LoginAL que realiza a chamada setcontentview(r.layout.loginal); Crie um arquivo loginal.xml com o conteúdo: <?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView style="@style/componenteal" android:layout_x="0dp" android:layout_y="12dp" android:text="@string/usuario" /> <TextView style="@style/componenteal" android:layout_x="0dp" android:layout_y="62dp" android:text="@string/senha" /> <EditText style="@style/textal" android:layout_x="50dp" android:layout_y="0dp" android:inputtype="text" /> <EditText style="@style/textal" android:layout_x="50dp" android:layout_y="50dp" android:inputtype="text" /> <Button style="@style/componenteal" android:layout_x="249dp" android:layout_y="100dp" android:text="@string/login" /> </AbsoluteLayout>

Exercício 7 Login AbsoluteLayout (2/2) Adicione a classe LoginAL no menu principal da aplicação e no AndroidManifest.xml Crie as definições de estilo: <style name="componenteal"> <item name="android:layout_height">wrap_content</item> <item name="android:layout_width">wrap_content</item> </style> <style name="textal" parent="componenteal"> <item name="android:layout_width">250dp</item> </style>

ScrollView A classe android.widget.scrollview é utilizada para telas que contem muitos componentes. A classe ScrollView é uma subclasse de FrameLayout. Dessa forma, pode receber apenas um componente, que vai ocupar o tamanho inteiro da tela. Para utilizar de forma adequada é necessário adicionar um layout dentro manager aninhado ao ScrollView

Exercício 8 ScrollView (1/2) Crie a Activity CemTextViewsSV bem como o arquivo de layout cemtextviewssv.xml. Adicione o conteúdo a seguir no arquivo cemtextviewssv.xml: <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" > <LinearLayout android:id="@+id/scrollviewlinearlayout" android:layout_width="fill_parent" android:layout_height="wrap_content" > </LinearLayout> </ScrollView>

Exercício 8 ScrollView (2/2) Adicione a Activity CemTextViewsSV no menu da aplicação e no AndroidManifest.xml Adicione a seguinte implementação no método oncreate da classe CemTextViewsSV: super.oncreate(savedinstancestate); setcontentview(r.layout.cemtextviewssv); LinearLayout ll = (LinearLayout) findviewbyid(r.id.scrollviewlinearlayout); for (int i = 0; i < 100; i++) { TextView t = new TextView(this); t.settext("textview número: " + i); ll.addview(t); }

Gallery O componente android.widget.gallerty é capaz de organizar componentes lado a lado na horizontal. Muito útil para criar uma galeria de imagens.

Exercício 9 Gallery (1/3) Crie uma activity chamada Exemplo Gallery. Adicione-a no AndroidManifest e no menu da aplicação. Crie um arquivo de layout chamado exemplogallery.xml, com o conteúdo: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/exemplo_gallery" android:textsize="30dp" /> <Gallery android:id="@+id/mygallery" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center"/> </LinearLayout>

Exercício 9 Gallery (2/3) Adicione a implementação a seguir na classe ExemploGallery: int[] imagens = { R.drawable.i1, R.drawable.i2, R.drawable.i3, R.drawable.i4, R.drawable.i5 }; protected void oncreate(bundle savedinstancestate) { setcontentview(r.layout.exemplogallery); Gallery g = (Gallery) findviewbyid(r.id.mygallery); g.setadapter(new BaseAdapter() { public View getview(int position, View convertview, ViewGroup parent) { ImageView iv = new ImageView(ExemploGallery.this); iv.setimageresource(imagens[position]); iv.setlayoutparams(new Gallery.LayoutParams(100, 150)); return iv; } public long getitemid(int position) {return position;} public Object getitem(int position) {return imagens[position];} public int getcount() {return imagens.length;} }); g.setonitemclicklistener(new OnItemClickListener() { public void onitemclick(adapterview<?> arg0, View arg1, int arg2, long arg3) { ImageView iv = new ImageView(ExemploGallery.this); iv.setimageresource(imagens[arg2]); Toast t = new Toast(ExemploGallery.this); t.setview(iv); t.show(); } }); }

Exercício 9 Gallery (3/3) Procure pela palavra Android no images.google.com. Pesquise por imagens do tamanho 200x200 Realize o download de cinco imagens. Nomeie-as como: i1.jpg, i2.jpg, i3.jpg, i4.jpg e i5.jpg. Adicione-as no diretório res/drawable-hdpi.

WebView O android possui um componente que permite visualizar páginas web dentro da aplicação desenvolvida. O funcionamento do componente é idêntico ao do navegador do android.

Exercício 10 WebView Crie uma nova Activity chamada PaginaTerra, com o conteúdo a seguir: @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); WebView wv = new WebView(this); wv.loadurl("http://m.terra.com.br"); setcontentview(wv); } Adicione a declaração da Activity no AndroidManifest e no menu principal da aplicação. No arquivo AndroidManifest adicione a instrução: <uses-permission android:name="android.permission.internet"/>

Fim