SlideShare uma empresa Scribd logo
1 de 98
Baixar para ler offline
Capítulo 12: Fragments
Instrutor
●

Programador desde 2000

●

Aluno de doutorado

●

●

●

●

Mestre em informática pelo
ICOMP/UFAM
Especialista em aplicações
WEB – FUCAPI
marcio.palheta@gmail.com
sites.google.com/site/marcio
palheta
M.Sc. Márcio Palheta
Agenda
●

Na estrada, até aqui

●

Mais funcionalidades em telas maiores

●

Fragments e seu histórico

●

Pacote de compatibilidades

●

Fragment de Listagem de Provas

●

Controlador de fragmentos: FragmentActivity

●

Fragment de Dados da Prova
M.Sc. Márcio Palheta

3/98
Mais funcionalidades em telas maiores
●

●

●

●

●

Hoje em dia, temos devices com os mais diferentes tipos e
tamanhos de telas
Quanto maior o device, maior a possibilidade de criação
de telas mais ricas, com maior quantidade de recursos
Mas o aumento de funcionalidades em uma tela gera um
problema: como tornar a tela mais complexa, sem
aumentar muito a quantidade de código necessário?
Seria uma boa ideia “quebrar” a tela em pedaços menores
Neste cenário, a Activity apenas delega as tarefas ao
controlador de cada pedaço de tela
M.Sc. Márcio Palheta

4/98
Fragments
●

A API de Fragments facilita a fragmentação da tela

●

Surgiu na versão Honeycomb (Android 3.0 – API Level 11)

●

Foram desenvolvidos para rodar em tablets

●

●

●

Desde a concepção de uma App, devemos considerar que
o usuário pode usar o device na Vertical ou Horizontal
Em telas grandes, a mudança de orientação da tela gera
grande impacto, podendo ser tratado com a criação de
layouts específicos para cada tipo de orientação
Mas e os devices com Android com Versão < 3.0 ?
M.Sc. Márcio Palheta

5/98
Pacote de compatibilidades
●

●

Para resolver o problema do slide anterior, foi criado um
pacote de compatibilidade, que está em um .jar do SDK
Nesse jar temos a classe FragmentActivity, que fornece a
capacidade de usarmos Fragments em versões antigas

●

Pacote: android.support.v4.app

●

Exemplo:
–

android.support.v4.app.FragmentActivity

–

android.support.v4.app.FragmentTransaction

M.Sc. Márcio Palheta

6/98
Definições de projeto
●

Vamos exibir a lista de provas agendas e seus dados

●

A listagem ficará em um Fragment e os dados em outro

●

●

●

Nossa App será adaptável, podendo ser executa em
smatrphone ou tablet, se adequando às características do
device
Vamos criar, ainda, uma FragmentActivity, responsável
por delegar atividades a cada Fragment criado
Vamos iniciar pela listagem de provas

M.Sc. Márcio Palheta

7/98
Exercício 01: Listagem de provas
●

Crie o arquivo de layout da nossa tela de listagem de
provas: /res/layout/listaprovaslayout.xml

M.Sc. Márcio Palheta

8/98
Exercício 01: Listagem de provas
●

Crie o arquivo de layout da nossa tela de listagem de
provas: /res/layout/listaprovaslayout.xml

ListView para
exibir a listagem
de provas

M.Sc. Márcio Palheta

9/98
Exercício 02: Crie a classe Prova.java

M.Sc. Márcio Palheta

10/98
Exercício 02: Crie a classe Prova.java
JavaBean que
representa as
Provas agendadas

M.Sc. Márcio Palheta

11/98
Exercício 02: Crie a classe Prova.java
JavaBean que
representa as
Provas agendadas

Lista de
atributos

M.Sc. Márcio Palheta

12/98
Exercício 02: Crie a classe Prova.java
JavaBean que
representa as
Provas agendadas

Lista de
atributos
Método construtor

M.Sc. Márcio Palheta

13/98
Exercício 02: Crie a classe Prova.java
JavaBean que
representa as
Provas agendadas

Lista de
atributos
Método construtor

Sobrescrita
de método
M.Sc. Márcio Palheta

14/98
Exercício 03: ListaProvasFragment

M.Sc. Márcio Palheta

15/98
Novo pacote
Exercício 03: ListaProvasFragment

M.Sc. Márcio Palheta

16/98
Novo pacote
Exercício 03: ListaProvasFragment
Classe filha de
android.support.
v4.app.Fragment

M.Sc. Márcio Palheta

17/98
Novo pacote
Exercício 03: ListaProvasFragment
Classe filha de
android.support.
v4.app.Fragment

Lista de atributos

M.Sc. Márcio Palheta

18/98
Novo pacote
Exercício 03: ListaProvasFragment
Classe filha de
android.support.
v4.app.Fragment

Lista de atributos

Método que cria
Lista de Provas

M.Sc. Márcio Palheta

19/98
Novo pacote
Exercício 03: ListaProvasFragment
Classe filha de
android.support.
v4.app.Fragment

Lista de atributos

Método que cria
Lista de Provas

Lista povoada

M.Sc. Márcio Palheta

20/98
Exercício 03: ListaProvasFragment

M.Sc. Márcio Palheta

21/98
Método de criação

Exercício 03: ListaProvasFragment

M.Sc. Márcio Palheta

22/98
Método de criação

Exercício 03: ListaProvasFragment

M.Sc. Márcio Palheta

23/98
Método de criação

Exercício 03: ListaProvasFragment

M.Sc. Márcio Palheta

24/98
Método de criação

Exercício 03: ListaProvasFragment

M.Sc. Márcio Palheta

25/98
Método de criação

Exercício 03: ListaProvasFragment

M.Sc. Márcio Palheta

26/98
Método de criação

Exercício 03: ListaProvasFragment

M.Sc. Márcio Palheta

27/98
Método de criação

Exercício 03: ListaProvasFragment

M.Sc. Márcio Palheta

28/98
Exercício 04: provaslayout.xml
●

Crie o layout da Activity que vai controlar os Fragments:
–

res/layout/provaslayout.xml

M.Sc. Márcio Palheta

29/98
Exercício 04: provaslayout.xml
●

Crie o layout da Activity que vai controlar os Fragments:
–

res/layout/provaslayout.xml
Componente onde
ficará o Fragment

M.Sc. Márcio Palheta

30/98
Exercício 05: Novo tipo de Activity

M.Sc. Márcio Palheta

31/98
Exercício 05: Novo tipo de Activity
Classe filha de
FragmentActivity

M.Sc. Márcio Palheta

32/98
Exercício 05: Novo tipo de Activity
Classe filha de
FragmentActivity

Composição
da Tela

M.Sc. Márcio Palheta

33/98
Exercício 06: AndroidManifest.xml
●

Declare a FragmentActivity no AndroidManifest:

M.Sc. Márcio Palheta

34/98
Exercício 07: Chamar a nova tela
●

Atualize o método de click no menu principal da classe
ListaAlunosActivity:

M.Sc. Márcio Palheta

35/98
Exercício 07: Chamar a nova tela
●

Atualize o método de click no menu principal da classe
ListaAlunosActivity:

Chamada da tela de
listagem de provas

M.Sc. Márcio Palheta

36/98
Execute a App

M.Sc. Márcio Palheta

37/98
Execute a App

M.Sc. Márcio Palheta

38/98
Execute a App

M.Sc. Márcio Palheta

39/98
Execute a App

M.Sc. Márcio Palheta

40/98
Execute a App

M.Sc. Márcio Palheta

41/98
Detalhes das provas
●

Vamos criar a estrutura para exibir os detalhes da prova

●

Para isso, vamos implementar os seguintes componentes:
–

res/drawable-nodpi/border.xml com definição de estilo
de borda que usaremos no background

–

res/layout/provas_detalhes.xml com definição da tela
de detalhes

–

...cadastroaluno.fragment.DetalhesProvaFragment para
controlar o layout prova_detalhes.xml

M.Sc. Márcio Palheta

42/98
Exercício 08: Arquivo de estilo
●

Crie o arquivo: res/drawable-nodpi/border.xml

M.Sc. Márcio Palheta

43/98
Exercício 08: Arquivo de estilo
●

Crie o arquivo: res/drawable-nodpi/border.xml

M.Sc. Márcio Palheta

44/98
Exercício 08: Arquivo de estilo
●

Crie o arquivo: res/drawable-nodpi/border.xml

M.Sc. Márcio Palheta

45/98
Exercício 08: Arquivo de estilo
●

Crie o arquivo: res/drawable-nodpi/border.xml

M.Sc. Márcio Palheta

46/98
Exercício 09: strings.xml
●

Inclua novas Strings no arquivo: res/values/strings.xml

M.Sc. Márcio Palheta

47/98
Exercício 10: Layout dos Detalhes
●

Crie o arquivo: res/layout/provas_detalhes.xml

M.Sc. Márcio Palheta

48/98
Exercício 10: Layout dos Detalhes
●

Crie o arquivo:

Layout em forma
res/layout/provas_detalhes.xml
de tabelas

M.Sc. Márcio Palheta

49/98
Exercício 10: Layout dos Detalhes
●

Crie o arquivo:

Layout em forma
res/layout/provas_detalhes.xml
de tabelas
Arquivo com
definições de
estilo

M.Sc. Márcio Palheta

50/98
Exercício 10: Layout dos Detalhes
●

Crie o arquivo:

Layout em forma
res/layout/provas_detalhes.xml
de tabelas
Arquivo com
definições de
estilo

Componente
de texto

M.Sc. Márcio Palheta

51/98
Exercício 10: Layout dos Detalhes
●

res/layout/provas_detalhes.xml (continuação)

M.Sc. Márcio Palheta

52/98
Exercício 10: Layout dos Detalhes
●

Definição de
res/layout/provas_detalhes.xml (continuação)
Linha da Tabela

M.Sc. Márcio Palheta

53/98
Exercício 10: Layout dos Detalhes
●

Definição de
res/layout/provas_detalhes.xml (continuação)
Linha da Tabela

Primeira
Coluna da Linha

M.Sc. Márcio Palheta

54/98
Exercício 10: Layout dos Detalhes
●

Definição de
res/layout/provas_detalhes.xml (continuação)
Linha da Tabela

Primeira
Coluna da Linha
Segunda
Coluna da Linha

M.Sc. Márcio Palheta

55/98
Exercício 10: Layout dos Detalhes
●

res/layout/provas_detalhes.xml (final)

M.Sc. Márcio Palheta

56/98
Exercício 10: Layout dos Detalhes
●

Nova linha
da tabela
res/layout/provas_detalhes.xml

(final)

M.Sc. Márcio Palheta

57/98
Exercício 10: Layout dos Detalhes
●

Nova linha
da tabela
res/layout/provas_detalhes.xml

(final)
Colunas da linha

M.Sc. Márcio Palheta

58/98
Exercício 10: Layout dos Detalhes
●

Nova linha
da tabela
res/layout/provas_detalhes.xml

(final)
Colunas da linha

Lista de tópicos
da prova

M.Sc. Márcio Palheta

59/98
Pensando em controle
●

●

●

●

Agora, podemos criar uma classe de controle para inflar o
layout de detalhes das provas agendadas
No pacote br.com.cursoandroid.cadastroaluno.fragment,
crie a classe DetalhesProvaFragment, filha de Fragment
No método onCreate(), use o objeto injetado LayoutInflater
para inflar o layout recém criado;
No fim, devolva a view gerada com o novo layout

M.Sc. Márcio Palheta

60/98
Exercício 11: DetalhesProvaFragment
●

Classe de controle da tela de Detalhes da Prova

M.Sc. Márcio Palheta

61/98
Exercício 11: DetalhesProvaFragment
●

Classe de controle da tela de Detalhes da

Pacote da
Prova classe

M.Sc. Márcio Palheta

62/98
Exercício 11: DetalhesProvaFragment
●

Classe de controle da tela de Detalhes da
Classe filha de

Pacote da
Prova classe

Fragment

M.Sc. Márcio Palheta

63/98
Exercício 11: DetalhesProvaFragment
●

Classe de controle da tela de Detalhes da
Classe filha de

Pacote da
Prova classe

Fragment

Inflando o layout de
Detalhes da prova

M.Sc. Márcio Palheta

64/98
Exercício 11: DetalhesProvaFragment
●

Classe de controle da tela de Detalhes da
Classe filha de

Pacote da
Prova classe

Fragment

Inflando o layout de
Detalhes da prova

Retorna a tela
de detalhes
M.Sc. Márcio Palheta

65/98
Pensando em usabilidade
●

●

●

O design atual da app está organizado para rodar em
smartphones, onde, geralmente, a tela é pequena.
No entanto, quando rodamos a App em um Tablet, temos
mais espaço para trabalhar, o que nos dá a chance de
exibir mais funcionalidades para o usuário.
Quando executarmos nossa App em um Tablet que esteja
na horizontal (landscape), gostaríamos de exibir:
–
–

a lista de provas, à esquerda; e
os detalhes de cada prova selecionada, à direita;

M.Sc. Márcio Palheta

66/98
Apresentação da tela em Tablets
●

●

Quando estudamos Application Resources, vimos que
podemos utilizar qualifiers para carregar recursos em
função das características do device;
Vamos aproveitar essa feature do Android para
desenvolvermos uma tela adequada a um device que seja
um Tablet, na orientação Landscape, representado por:
–

●

●

xlarge-land

Contudo, além carregarmos automaticamente o recurso,
precisamos saber, em tempo de projeto, se o device é um
tablet em landscape.
Para isso podemos definir arquivos booleanos, onde true
indica tablet-landscape e false o contrário.
M.Sc. Márcio Palheta

67/98
Definição de arquivos booleanos
●

●

●

Para tablet-landscape - /res/values-xlarge-land/bools.xml:
<resources>
<bool name="isTablet">true</bool>
</resources>
Para o contrário - /res/values/bools.xml:
<resources>
<bool name="isTablet">false</bool>
</resources>
Agora, podemos criar o layout da tela de provas para
rodar em xlarge-land

M.Sc. Márcio Palheta

68/98
Exercício 12: Layout para tablet
●

Crie o arquivo: res/layout-xlarge-land/provaslayout.xml

M.Sc. Márcio Palheta

69/98
Exercício 12: Layout para tablet
●

Crie o arquivo: res/layout-xlarge-land/provaslayout.xml

Listagem de provas

M.Sc. Márcio Palheta

70/98
Exercício 12: Layout para tablet
●

Crie o arquivo: res/layout-xlarge-land/provaslayout.xml

Listagem de provas
Precisa de 1
pedaço do layout

M.Sc. Márcio Palheta

71/98
Exercício 12: Layout para tablet
●

Crie o arquivo: res/layout-xlarge-land/provaslayout.xml

Listagem de provas
Precisa de 1
pedaço do layout
Detalhes da provas

M.Sc. Márcio Palheta

72/98
Exercício 12: Layout para tablet
●

Crie o arquivo: res/layout-xlarge-land/provaslayout.xml

Listagem de provas
Precisa de 1
pedaço do layout
Detalhes da provas
Precisa de 2
pedaços do layout

M.Sc. Márcio Palheta

73/98
Carga personalizada do layout
●

Agora que podemos descobrir se a tela é xlarge-land ou
não, vamos:
–
–

●

Perguntar do ApplicationResources se a tela é grande
Vincular os Fragments ListaProvas e DetalheProvas,
de acordo com o tamanho da tela

Na classe ProvasActivity, precisamos:
–

Incluir o método isTablet()

–

Alterar o método onCreate()

M.Sc. Márcio Palheta

74/98
Exercício 13: Alterar ProvasActivity
●

No controlador ProvasActivity, inclua o método isTablet()
para acessar o valor da propriedade isTablet, do arquivo
bool.xml:

M.Sc. Márcio Palheta

75/98
Exercício 14: carregar fragmentos
●

Altere o método ProvasActivity.onCreate():

M.Sc. Márcio Palheta

76/98
Exercício 14: carregar fragmentos
●

Altere o método ProvasActivity.onCreate():

Carrega as telas de Listagem
e Detalhes da prova

M.Sc. Márcio Palheta

77/98
Exercício 14: carregar fragmentos
●

Altere o método ProvasActivity.onCreate():

Carrega as telas de Listagem
e Detalhes da prova

Carrega apenas a
Tela de Listagem

M.Sc. Márcio Palheta

78/98
Rode a App e veja o resultado

M.Sc. Márcio Palheta

79/98
Trocando dados entre Fragments
●

●

●

●

●

Com a listagem das provas pronta, podemos implementar
a visualização dos detalhes.
Vamos atualizar a tela de Detalhes quando ocorrer um
click em um dos itens da Listagem.
Vamos tratar o click em itens da lista, para que possamos
chamar a tela de detalhes, passando como parâmetro a
prova que foi selecionada.
Porém, não é papel da ListaProvasFragment chamar a
DetalhesProvaFragment.
Essa delegação é papel da Activity que controla os
fragmentos
M.Sc. Márcio Palheta

80/98
Exercício 15: Alterar ProvasActivity
●

Crie o método selecionarProva(Prova) em ProvasActivity

M.Sc. Márcio Palheta

81/98
Exercício 15: Alterar ProvasActivity
●

Definição de parâmetros

Crie o método selecionarProva(Prova) em ProvasActivity

M.Sc. Márcio Palheta

82/98
Exercício 15: Alterar ProvasActivity
●

Definição de parâmetros

Crie o método selecionarProva(Prova) em ProvasActivity

Criação do Fragment

M.Sc. Márcio Palheta

83/98
Exercício 15: Alterar ProvasActivity
●

Definição de parâmetros

Crie o método selecionarProva(Prova) em ProvasActivity

Criação do Fragment

Configuração da tela

M.Sc. Márcio Palheta

84/98
Exercício 15: Alterar ProvasActivity
●

Definição de parâmetros

Crie o método selecionarProva(Prova) em ProvasActivity

Criação do Fragment

Configuração da tela
Se não for xlarge-land,
Não incrementa a
Pilha de execução

M.Sc. Márcio Palheta

85/98
Exercício 16: Atualizar o fragment
●

Altere o método ListaProvasFragment.onCreate()

M.Sc. Márcio Palheta

86/98
Exercício 16: Atualizar o fragment
●

Altere o método ListaProvasFragment.onCreate()

Delegar atividade para
Activity de controle

M.Sc. Márcio Palheta

87/98
Atualizações da tela de Detalhes
●

●

Precisamos adequar o nosso controlador da tela de
detalhes, para receber uma Prova e exibir seus dados
Para isso, em DetalhesProvaFragment, vamos:
–

Criar atributos de Prova, matéria, data e tópicos;

–

Pegar a prova que foi passada como parâmetro;

–

Criar o método buscaComponentes(), que liga atributos
a componentes de tela; e

–

O método carregarCamposComDadosDaProva(), que
atualiza os componente de tela, com dados da Prova
M.Sc. Márcio Palheta

88/98
Exercício 17: Receber dados da prova

M.Sc. Márcio Palheta

89/98
Exercício 17: Receber dados da prova
Lista de
atributos

M.Sc. Márcio Palheta

90/98
Exercício 17: Receber dados da prova
Lista de
atributos

Associa campos da
Tela a atributos

M.Sc. Márcio Palheta

91/98
Exercício 17: Receber dados da prova
Lista de
atributos

Associa campos da
Tela a atributos

Carrega os dados
da Prova na tela

M.Sc. Márcio Palheta

92/98
Exercício 17: Receber dados da prova
●

Atualize o método DetalhesProvaFragment.onCreate()

M.Sc. Márcio Palheta

93/98
Exercício 17: Receber dados da prova
●

Atualize o método DetalhesProvaFragment.onCreate()

Receber dados da prova

M.Sc. Márcio Palheta

94/98
Exercício 17: Receber dados da prova
●

Atualize o método DetalhesProvaFragment.onCreate()

Receber dados da prova

Exibir dados da prova

M.Sc. Márcio Palheta

95/98
Rode a App e selecione uma Prova

M.Sc. Márcio Palheta

96/98
Referências
●

www.caelum.com.br

●

d.android.com

●

●

LECHETA, Ricardo. Google Android, 3a edição,
Novatec, São Paulo, 2013
Código fonte completo:
https://github.com/marciopalheta/cursosandroid

M.Sc. Márcio Palheta

97/98
Capítulo 12: Fragments

Mais conteúdo relacionado

Mais procurados

Capítulo 05 - Menus de Contexto e Exclusão de Aluno
Capítulo 05 - Menus de Contexto e Exclusão de AlunoCapítulo 05 - Menus de Contexto e Exclusão de Aluno
Capítulo 05 - Menus de Contexto e Exclusão de AlunoMarcio Palheta
 
Capítulo 03 - Formulários, menus e navegação entre telas
Capítulo 03 - Formulários, menus e navegação entre telasCapítulo 03 - Formulários, menus e navegação entre telas
Capítulo 03 - Formulários, menus e navegação entre telasMarcio Palheta
 
Webquest adição e subtracção de fracções, elvira ferreira
Webquest adição e subtracção de fracções, elvira ferreiraWebquest adição e subtracção de fracções, elvira ferreira
Webquest adição e subtracção de fracções, elvira ferreiraJoao Ferreira
 
Aplicações java com netbeans
Aplicações  java com  netbeansAplicações  java com  netbeans
Aplicações java com netbeansThalles Anderson
 

Mais procurados (6)

Capítulo 05 - Menus de Contexto e Exclusão de Aluno
Capítulo 05 - Menus de Contexto e Exclusão de AlunoCapítulo 05 - Menus de Contexto e Exclusão de Aluno
Capítulo 05 - Menus de Contexto e Exclusão de Aluno
 
Capítulo 03 - Formulários, menus e navegação entre telas
Capítulo 03 - Formulários, menus e navegação entre telasCapítulo 03 - Formulários, menus e navegação entre telas
Capítulo 03 - Formulários, menus e navegação entre telas
 
Webquest adição e subtracção de fracções, elvira ferreira
Webquest adição e subtracção de fracções, elvira ferreiraWebquest adição e subtracção de fracções, elvira ferreira
Webquest adição e subtracção de fracções, elvira ferreira
 
Apostila php avancado
Apostila php avancadoApostila php avancado
Apostila php avancado
 
Aplicações java com netbeans
Aplicações  java com  netbeansAplicações  java com  netbeans
Aplicações java com netbeans
 
Mooc3
Mooc3Mooc3
Mooc3
 

Semelhante a Lista de provas com fragments

Aula 02 fundamentos
Aula 02   fundamentosAula 02   fundamentos
Aula 02 fundamentosfmkoba
 
Demoiselle Behave - Parte 3
Demoiselle Behave - Parte 3Demoiselle Behave - Parte 3
Demoiselle Behave - Parte 3Vanderson Silva
 
PCF03 - 2001 Comentada
PCF03 - 2001 ComentadaPCF03 - 2001 Comentada
PCF03 - 2001 ComentadaWalter Cunha
 
Tutorial poke-tool
Tutorial poke-toolTutorial poke-tool
Tutorial poke-toolunifesptk
 
Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceçõesLeonardo Malkes
 
Introdução ao Spider CPM (2)
Introdução ao Spider CPM (2)Introdução ao Spider CPM (2)
Introdução ao Spider CPM (2)Peter Mello
 
Visualg 1231617089791929-2
Visualg 1231617089791929-2Visualg 1231617089791929-2
Visualg 1231617089791929-2jaoozinhoqi123
 
Metodologia e Linguagem de Programação Avançada - Aula 1
Metodologia e Linguagem de Programação Avançada - Aula 1Metodologia e Linguagem de Programação Avançada - Aula 1
Metodologia e Linguagem de Programação Avançada - Aula 1Thyago Maia
 
TDC - Testes e Sistemas legados #quemNunca - SC/2016
TDC - Testes e Sistemas legados #quemNunca - SC/2016TDC - Testes e Sistemas legados #quemNunca - SC/2016
TDC - Testes e Sistemas legados #quemNunca - SC/2016Fernando Santiago
 
Desenvolvendo para magento - primeiros passos
Desenvolvendo para magento - primeiros passosDesenvolvendo para magento - primeiros passos
Desenvolvendo para magento - primeiros passosRicardo Martins
 
Capítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorldCapítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorldMarcio Palheta
 
Test-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.netTest-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.netRenato Groff
 
Spring & Struts
Spring & StrutsSpring & Struts
Spring & Strutseduan
 
plano_de_projeto_controlart_rascunho
plano_de_projeto_controlart_rascunhoplano_de_projeto_controlart_rascunho
plano_de_projeto_controlart_rascunhouserrx
 
Joomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisJoomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisrafaelberlanda
 

Semelhante a Lista de provas com fragments (20)

Aula 02 fundamentos
Aula 02   fundamentosAula 02   fundamentos
Aula 02 fundamentos
 
Demoiselle Behave - Parte 3
Demoiselle Behave - Parte 3Demoiselle Behave - Parte 3
Demoiselle Behave - Parte 3
 
PCF03 - 2001 Comentada
PCF03 - 2001 ComentadaPCF03 - 2001 Comentada
PCF03 - 2001 Comentada
 
Tutorial poke-tool
Tutorial poke-toolTutorial poke-tool
Tutorial poke-tool
 
Apostila geoinformações II
Apostila geoinformações IIApostila geoinformações II
Apostila geoinformações II
 
Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceções
 
Introdução ao Spider CPM (2)
Introdução ao Spider CPM (2)Introdução ao Spider CPM (2)
Introdução ao Spider CPM (2)
 
Visualg 1231617089791929-2
Visualg 1231617089791929-2Visualg 1231617089791929-2
Visualg 1231617089791929-2
 
Visualg
VisualgVisualg
Visualg
 
Metodologia e Linguagem de Programação Avançada - Aula 1
Metodologia e Linguagem de Programação Avançada - Aula 1Metodologia e Linguagem de Programação Avançada - Aula 1
Metodologia e Linguagem de Programação Avançada - Aula 1
 
Pdm -final
Pdm  -finalPdm  -final
Pdm -final
 
TDC - Testes e Sistemas legados #quemNunca - SC/2016
TDC - Testes e Sistemas legados #quemNunca - SC/2016TDC - Testes e Sistemas legados #quemNunca - SC/2016
TDC - Testes e Sistemas legados #quemNunca - SC/2016
 
Desenvolvendo para magento - primeiros passos
Desenvolvendo para magento - primeiros passosDesenvolvendo para magento - primeiros passos
Desenvolvendo para magento - primeiros passos
 
Capítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorldCapítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorld
 
Test-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.netTest-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.net
 
Magento: Mitos vs Vantagens
Magento: Mitos vs VantagensMagento: Mitos vs Vantagens
Magento: Mitos vs Vantagens
 
Ex informatica basica
Ex informatica basicaEx informatica basica
Ex informatica basica
 
Spring & Struts
Spring & StrutsSpring & Struts
Spring & Struts
 
plano_de_projeto_controlart_rascunho
plano_de_projeto_controlart_rascunhoplano_de_projeto_controlart_rascunho
plano_de_projeto_controlart_rascunho
 
Joomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisJoomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portais
 

Último

ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxOsnilReis1
 
Livro O QUE É LUGAR DE FALA - Autora Djamila Ribeiro
Livro O QUE É LUGAR DE FALA  - Autora Djamila RibeiroLivro O QUE É LUGAR DE FALA  - Autora Djamila Ribeiro
Livro O QUE É LUGAR DE FALA - Autora Djamila RibeiroMarcele Ravasio
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOColégio Santa Teresinha
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavrasMary Alvarenga
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxleandropereira983288
 
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxD9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxRonys4
 
Mapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxMapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxBeatrizLittig1
 
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...licinioBorges
 
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresLilianPiola
 
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxSlides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxLuizHenriquedeAlmeid6
 
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -Aline Santana
 
Nova BNCC Atualizada para novas pesquisas
Nova BNCC Atualizada para novas pesquisasNova BNCC Atualizada para novas pesquisas
Nova BNCC Atualizada para novas pesquisasraveccavp
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfManuais Formação
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinhaMary Alvarenga
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalJacqueline Cerqueira
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Mary Alvarenga
 

Último (20)

ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
 
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA -
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA      -XI OLIMPÍADAS DA LÍNGUA PORTUGUESA      -
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA -
 
Livro O QUE É LUGAR DE FALA - Autora Djamila Ribeiro
Livro O QUE É LUGAR DE FALA  - Autora Djamila RibeiroLivro O QUE É LUGAR DE FALA  - Autora Djamila Ribeiro
Livro O QUE É LUGAR DE FALA - Autora Djamila Ribeiro
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavras
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptx
 
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxD9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
 
Mapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxMapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docx
 
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
 
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
 
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxSlides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
 
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
 
Nova BNCC Atualizada para novas pesquisas
Nova BNCC Atualizada para novas pesquisasNova BNCC Atualizada para novas pesquisas
Nova BNCC Atualizada para novas pesquisas
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdf
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinha
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem Organizacional
 
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
 
Em tempo de Quaresma .
Em tempo de Quaresma                            .Em tempo de Quaresma                            .
Em tempo de Quaresma .
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
 

Lista de provas com fragments

  • 2. Instrutor ● Programador desde 2000 ● Aluno de doutorado ● ● ● ● Mestre em informática pelo ICOMP/UFAM Especialista em aplicações WEB – FUCAPI marcio.palheta@gmail.com sites.google.com/site/marcio palheta M.Sc. Márcio Palheta
  • 3. Agenda ● Na estrada, até aqui ● Mais funcionalidades em telas maiores ● Fragments e seu histórico ● Pacote de compatibilidades ● Fragment de Listagem de Provas ● Controlador de fragmentos: FragmentActivity ● Fragment de Dados da Prova M.Sc. Márcio Palheta 3/98
  • 4. Mais funcionalidades em telas maiores ● ● ● ● ● Hoje em dia, temos devices com os mais diferentes tipos e tamanhos de telas Quanto maior o device, maior a possibilidade de criação de telas mais ricas, com maior quantidade de recursos Mas o aumento de funcionalidades em uma tela gera um problema: como tornar a tela mais complexa, sem aumentar muito a quantidade de código necessário? Seria uma boa ideia “quebrar” a tela em pedaços menores Neste cenário, a Activity apenas delega as tarefas ao controlador de cada pedaço de tela M.Sc. Márcio Palheta 4/98
  • 5. Fragments ● A API de Fragments facilita a fragmentação da tela ● Surgiu na versão Honeycomb (Android 3.0 – API Level 11) ● Foram desenvolvidos para rodar em tablets ● ● ● Desde a concepção de uma App, devemos considerar que o usuário pode usar o device na Vertical ou Horizontal Em telas grandes, a mudança de orientação da tela gera grande impacto, podendo ser tratado com a criação de layouts específicos para cada tipo de orientação Mas e os devices com Android com Versão < 3.0 ? M.Sc. Márcio Palheta 5/98
  • 6. Pacote de compatibilidades ● ● Para resolver o problema do slide anterior, foi criado um pacote de compatibilidade, que está em um .jar do SDK Nesse jar temos a classe FragmentActivity, que fornece a capacidade de usarmos Fragments em versões antigas ● Pacote: android.support.v4.app ● Exemplo: – android.support.v4.app.FragmentActivity – android.support.v4.app.FragmentTransaction M.Sc. Márcio Palheta 6/98
  • 7. Definições de projeto ● Vamos exibir a lista de provas agendas e seus dados ● A listagem ficará em um Fragment e os dados em outro ● ● ● Nossa App será adaptável, podendo ser executa em smatrphone ou tablet, se adequando às características do device Vamos criar, ainda, uma FragmentActivity, responsável por delegar atividades a cada Fragment criado Vamos iniciar pela listagem de provas M.Sc. Márcio Palheta 7/98
  • 8. Exercício 01: Listagem de provas ● Crie o arquivo de layout da nossa tela de listagem de provas: /res/layout/listaprovaslayout.xml M.Sc. Márcio Palheta 8/98
  • 9. Exercício 01: Listagem de provas ● Crie o arquivo de layout da nossa tela de listagem de provas: /res/layout/listaprovaslayout.xml ListView para exibir a listagem de provas M.Sc. Márcio Palheta 9/98
  • 10. Exercício 02: Crie a classe Prova.java M.Sc. Márcio Palheta 10/98
  • 11. Exercício 02: Crie a classe Prova.java JavaBean que representa as Provas agendadas M.Sc. Márcio Palheta 11/98
  • 12. Exercício 02: Crie a classe Prova.java JavaBean que representa as Provas agendadas Lista de atributos M.Sc. Márcio Palheta 12/98
  • 13. Exercício 02: Crie a classe Prova.java JavaBean que representa as Provas agendadas Lista de atributos Método construtor M.Sc. Márcio Palheta 13/98
  • 14. Exercício 02: Crie a classe Prova.java JavaBean que representa as Provas agendadas Lista de atributos Método construtor Sobrescrita de método M.Sc. Márcio Palheta 14/98
  • 16. Novo pacote Exercício 03: ListaProvasFragment M.Sc. Márcio Palheta 16/98
  • 17. Novo pacote Exercício 03: ListaProvasFragment Classe filha de android.support. v4.app.Fragment M.Sc. Márcio Palheta 17/98
  • 18. Novo pacote Exercício 03: ListaProvasFragment Classe filha de android.support. v4.app.Fragment Lista de atributos M.Sc. Márcio Palheta 18/98
  • 19. Novo pacote Exercício 03: ListaProvasFragment Classe filha de android.support. v4.app.Fragment Lista de atributos Método que cria Lista de Provas M.Sc. Márcio Palheta 19/98
  • 20. Novo pacote Exercício 03: ListaProvasFragment Classe filha de android.support. v4.app.Fragment Lista de atributos Método que cria Lista de Provas Lista povoada M.Sc. Márcio Palheta 20/98
  • 22. Método de criação Exercício 03: ListaProvasFragment M.Sc. Márcio Palheta 22/98
  • 23. Método de criação Exercício 03: ListaProvasFragment M.Sc. Márcio Palheta 23/98
  • 24. Método de criação Exercício 03: ListaProvasFragment M.Sc. Márcio Palheta 24/98
  • 25. Método de criação Exercício 03: ListaProvasFragment M.Sc. Márcio Palheta 25/98
  • 26. Método de criação Exercício 03: ListaProvasFragment M.Sc. Márcio Palheta 26/98
  • 27. Método de criação Exercício 03: ListaProvasFragment M.Sc. Márcio Palheta 27/98
  • 28. Método de criação Exercício 03: ListaProvasFragment M.Sc. Márcio Palheta 28/98
  • 29. Exercício 04: provaslayout.xml ● Crie o layout da Activity que vai controlar os Fragments: – res/layout/provaslayout.xml M.Sc. Márcio Palheta 29/98
  • 30. Exercício 04: provaslayout.xml ● Crie o layout da Activity que vai controlar os Fragments: – res/layout/provaslayout.xml Componente onde ficará o Fragment M.Sc. Márcio Palheta 30/98
  • 31. Exercício 05: Novo tipo de Activity M.Sc. Márcio Palheta 31/98
  • 32. Exercício 05: Novo tipo de Activity Classe filha de FragmentActivity M.Sc. Márcio Palheta 32/98
  • 33. Exercício 05: Novo tipo de Activity Classe filha de FragmentActivity Composição da Tela M.Sc. Márcio Palheta 33/98
  • 34. Exercício 06: AndroidManifest.xml ● Declare a FragmentActivity no AndroidManifest: M.Sc. Márcio Palheta 34/98
  • 35. Exercício 07: Chamar a nova tela ● Atualize o método de click no menu principal da classe ListaAlunosActivity: M.Sc. Márcio Palheta 35/98
  • 36. Exercício 07: Chamar a nova tela ● Atualize o método de click no menu principal da classe ListaAlunosActivity: Chamada da tela de listagem de provas M.Sc. Márcio Palheta 36/98
  • 37. Execute a App M.Sc. Márcio Palheta 37/98
  • 38. Execute a App M.Sc. Márcio Palheta 38/98
  • 39. Execute a App M.Sc. Márcio Palheta 39/98
  • 40. Execute a App M.Sc. Márcio Palheta 40/98
  • 41. Execute a App M.Sc. Márcio Palheta 41/98
  • 42. Detalhes das provas ● Vamos criar a estrutura para exibir os detalhes da prova ● Para isso, vamos implementar os seguintes componentes: – res/drawable-nodpi/border.xml com definição de estilo de borda que usaremos no background – res/layout/provas_detalhes.xml com definição da tela de detalhes – ...cadastroaluno.fragment.DetalhesProvaFragment para controlar o layout prova_detalhes.xml M.Sc. Márcio Palheta 42/98
  • 43. Exercício 08: Arquivo de estilo ● Crie o arquivo: res/drawable-nodpi/border.xml M.Sc. Márcio Palheta 43/98
  • 44. Exercício 08: Arquivo de estilo ● Crie o arquivo: res/drawable-nodpi/border.xml M.Sc. Márcio Palheta 44/98
  • 45. Exercício 08: Arquivo de estilo ● Crie o arquivo: res/drawable-nodpi/border.xml M.Sc. Márcio Palheta 45/98
  • 46. Exercício 08: Arquivo de estilo ● Crie o arquivo: res/drawable-nodpi/border.xml M.Sc. Márcio Palheta 46/98
  • 47. Exercício 09: strings.xml ● Inclua novas Strings no arquivo: res/values/strings.xml M.Sc. Márcio Palheta 47/98
  • 48. Exercício 10: Layout dos Detalhes ● Crie o arquivo: res/layout/provas_detalhes.xml M.Sc. Márcio Palheta 48/98
  • 49. Exercício 10: Layout dos Detalhes ● Crie o arquivo: Layout em forma res/layout/provas_detalhes.xml de tabelas M.Sc. Márcio Palheta 49/98
  • 50. Exercício 10: Layout dos Detalhes ● Crie o arquivo: Layout em forma res/layout/provas_detalhes.xml de tabelas Arquivo com definições de estilo M.Sc. Márcio Palheta 50/98
  • 51. Exercício 10: Layout dos Detalhes ● Crie o arquivo: Layout em forma res/layout/provas_detalhes.xml de tabelas Arquivo com definições de estilo Componente de texto M.Sc. Márcio Palheta 51/98
  • 52. Exercício 10: Layout dos Detalhes ● res/layout/provas_detalhes.xml (continuação) M.Sc. Márcio Palheta 52/98
  • 53. Exercício 10: Layout dos Detalhes ● Definição de res/layout/provas_detalhes.xml (continuação) Linha da Tabela M.Sc. Márcio Palheta 53/98
  • 54. Exercício 10: Layout dos Detalhes ● Definição de res/layout/provas_detalhes.xml (continuação) Linha da Tabela Primeira Coluna da Linha M.Sc. Márcio Palheta 54/98
  • 55. Exercício 10: Layout dos Detalhes ● Definição de res/layout/provas_detalhes.xml (continuação) Linha da Tabela Primeira Coluna da Linha Segunda Coluna da Linha M.Sc. Márcio Palheta 55/98
  • 56. Exercício 10: Layout dos Detalhes ● res/layout/provas_detalhes.xml (final) M.Sc. Márcio Palheta 56/98
  • 57. Exercício 10: Layout dos Detalhes ● Nova linha da tabela res/layout/provas_detalhes.xml (final) M.Sc. Márcio Palheta 57/98
  • 58. Exercício 10: Layout dos Detalhes ● Nova linha da tabela res/layout/provas_detalhes.xml (final) Colunas da linha M.Sc. Márcio Palheta 58/98
  • 59. Exercício 10: Layout dos Detalhes ● Nova linha da tabela res/layout/provas_detalhes.xml (final) Colunas da linha Lista de tópicos da prova M.Sc. Márcio Palheta 59/98
  • 60. Pensando em controle ● ● ● ● Agora, podemos criar uma classe de controle para inflar o layout de detalhes das provas agendadas No pacote br.com.cursoandroid.cadastroaluno.fragment, crie a classe DetalhesProvaFragment, filha de Fragment No método onCreate(), use o objeto injetado LayoutInflater para inflar o layout recém criado; No fim, devolva a view gerada com o novo layout M.Sc. Márcio Palheta 60/98
  • 61. Exercício 11: DetalhesProvaFragment ● Classe de controle da tela de Detalhes da Prova M.Sc. Márcio Palheta 61/98
  • 62. Exercício 11: DetalhesProvaFragment ● Classe de controle da tela de Detalhes da Pacote da Prova classe M.Sc. Márcio Palheta 62/98
  • 63. Exercício 11: DetalhesProvaFragment ● Classe de controle da tela de Detalhes da Classe filha de Pacote da Prova classe Fragment M.Sc. Márcio Palheta 63/98
  • 64. Exercício 11: DetalhesProvaFragment ● Classe de controle da tela de Detalhes da Classe filha de Pacote da Prova classe Fragment Inflando o layout de Detalhes da prova M.Sc. Márcio Palheta 64/98
  • 65. Exercício 11: DetalhesProvaFragment ● Classe de controle da tela de Detalhes da Classe filha de Pacote da Prova classe Fragment Inflando o layout de Detalhes da prova Retorna a tela de detalhes M.Sc. Márcio Palheta 65/98
  • 66. Pensando em usabilidade ● ● ● O design atual da app está organizado para rodar em smartphones, onde, geralmente, a tela é pequena. No entanto, quando rodamos a App em um Tablet, temos mais espaço para trabalhar, o que nos dá a chance de exibir mais funcionalidades para o usuário. Quando executarmos nossa App em um Tablet que esteja na horizontal (landscape), gostaríamos de exibir: – – a lista de provas, à esquerda; e os detalhes de cada prova selecionada, à direita; M.Sc. Márcio Palheta 66/98
  • 67. Apresentação da tela em Tablets ● ● Quando estudamos Application Resources, vimos que podemos utilizar qualifiers para carregar recursos em função das características do device; Vamos aproveitar essa feature do Android para desenvolvermos uma tela adequada a um device que seja um Tablet, na orientação Landscape, representado por: – ● ● xlarge-land Contudo, além carregarmos automaticamente o recurso, precisamos saber, em tempo de projeto, se o device é um tablet em landscape. Para isso podemos definir arquivos booleanos, onde true indica tablet-landscape e false o contrário. M.Sc. Márcio Palheta 67/98
  • 68. Definição de arquivos booleanos ● ● ● Para tablet-landscape - /res/values-xlarge-land/bools.xml: <resources> <bool name="isTablet">true</bool> </resources> Para o contrário - /res/values/bools.xml: <resources> <bool name="isTablet">false</bool> </resources> Agora, podemos criar o layout da tela de provas para rodar em xlarge-land M.Sc. Márcio Palheta 68/98
  • 69. Exercício 12: Layout para tablet ● Crie o arquivo: res/layout-xlarge-land/provaslayout.xml M.Sc. Márcio Palheta 69/98
  • 70. Exercício 12: Layout para tablet ● Crie o arquivo: res/layout-xlarge-land/provaslayout.xml Listagem de provas M.Sc. Márcio Palheta 70/98
  • 71. Exercício 12: Layout para tablet ● Crie o arquivo: res/layout-xlarge-land/provaslayout.xml Listagem de provas Precisa de 1 pedaço do layout M.Sc. Márcio Palheta 71/98
  • 72. Exercício 12: Layout para tablet ● Crie o arquivo: res/layout-xlarge-land/provaslayout.xml Listagem de provas Precisa de 1 pedaço do layout Detalhes da provas M.Sc. Márcio Palheta 72/98
  • 73. Exercício 12: Layout para tablet ● Crie o arquivo: res/layout-xlarge-land/provaslayout.xml Listagem de provas Precisa de 1 pedaço do layout Detalhes da provas Precisa de 2 pedaços do layout M.Sc. Márcio Palheta 73/98
  • 74. Carga personalizada do layout ● Agora que podemos descobrir se a tela é xlarge-land ou não, vamos: – – ● Perguntar do ApplicationResources se a tela é grande Vincular os Fragments ListaProvas e DetalheProvas, de acordo com o tamanho da tela Na classe ProvasActivity, precisamos: – Incluir o método isTablet() – Alterar o método onCreate() M.Sc. Márcio Palheta 74/98
  • 75. Exercício 13: Alterar ProvasActivity ● No controlador ProvasActivity, inclua o método isTablet() para acessar o valor da propriedade isTablet, do arquivo bool.xml: M.Sc. Márcio Palheta 75/98
  • 76. Exercício 14: carregar fragmentos ● Altere o método ProvasActivity.onCreate(): M.Sc. Márcio Palheta 76/98
  • 77. Exercício 14: carregar fragmentos ● Altere o método ProvasActivity.onCreate(): Carrega as telas de Listagem e Detalhes da prova M.Sc. Márcio Palheta 77/98
  • 78. Exercício 14: carregar fragmentos ● Altere o método ProvasActivity.onCreate(): Carrega as telas de Listagem e Detalhes da prova Carrega apenas a Tela de Listagem M.Sc. Márcio Palheta 78/98
  • 79. Rode a App e veja o resultado M.Sc. Márcio Palheta 79/98
  • 80. Trocando dados entre Fragments ● ● ● ● ● Com a listagem das provas pronta, podemos implementar a visualização dos detalhes. Vamos atualizar a tela de Detalhes quando ocorrer um click em um dos itens da Listagem. Vamos tratar o click em itens da lista, para que possamos chamar a tela de detalhes, passando como parâmetro a prova que foi selecionada. Porém, não é papel da ListaProvasFragment chamar a DetalhesProvaFragment. Essa delegação é papel da Activity que controla os fragmentos M.Sc. Márcio Palheta 80/98
  • 81. Exercício 15: Alterar ProvasActivity ● Crie o método selecionarProva(Prova) em ProvasActivity M.Sc. Márcio Palheta 81/98
  • 82. Exercício 15: Alterar ProvasActivity ● Definição de parâmetros Crie o método selecionarProva(Prova) em ProvasActivity M.Sc. Márcio Palheta 82/98
  • 83. Exercício 15: Alterar ProvasActivity ● Definição de parâmetros Crie o método selecionarProva(Prova) em ProvasActivity Criação do Fragment M.Sc. Márcio Palheta 83/98
  • 84. Exercício 15: Alterar ProvasActivity ● Definição de parâmetros Crie o método selecionarProva(Prova) em ProvasActivity Criação do Fragment Configuração da tela M.Sc. Márcio Palheta 84/98
  • 85. Exercício 15: Alterar ProvasActivity ● Definição de parâmetros Crie o método selecionarProva(Prova) em ProvasActivity Criação do Fragment Configuração da tela Se não for xlarge-land, Não incrementa a Pilha de execução M.Sc. Márcio Palheta 85/98
  • 86. Exercício 16: Atualizar o fragment ● Altere o método ListaProvasFragment.onCreate() M.Sc. Márcio Palheta 86/98
  • 87. Exercício 16: Atualizar o fragment ● Altere o método ListaProvasFragment.onCreate() Delegar atividade para Activity de controle M.Sc. Márcio Palheta 87/98
  • 88. Atualizações da tela de Detalhes ● ● Precisamos adequar o nosso controlador da tela de detalhes, para receber uma Prova e exibir seus dados Para isso, em DetalhesProvaFragment, vamos: – Criar atributos de Prova, matéria, data e tópicos; – Pegar a prova que foi passada como parâmetro; – Criar o método buscaComponentes(), que liga atributos a componentes de tela; e – O método carregarCamposComDadosDaProva(), que atualiza os componente de tela, com dados da Prova M.Sc. Márcio Palheta 88/98
  • 89. Exercício 17: Receber dados da prova M.Sc. Márcio Palheta 89/98
  • 90. Exercício 17: Receber dados da prova Lista de atributos M.Sc. Márcio Palheta 90/98
  • 91. Exercício 17: Receber dados da prova Lista de atributos Associa campos da Tela a atributos M.Sc. Márcio Palheta 91/98
  • 92. Exercício 17: Receber dados da prova Lista de atributos Associa campos da Tela a atributos Carrega os dados da Prova na tela M.Sc. Márcio Palheta 92/98
  • 93. Exercício 17: Receber dados da prova ● Atualize o método DetalhesProvaFragment.onCreate() M.Sc. Márcio Palheta 93/98
  • 94. Exercício 17: Receber dados da prova ● Atualize o método DetalhesProvaFragment.onCreate() Receber dados da prova M.Sc. Márcio Palheta 94/98
  • 95. Exercício 17: Receber dados da prova ● Atualize o método DetalhesProvaFragment.onCreate() Receber dados da prova Exibir dados da prova M.Sc. Márcio Palheta 95/98
  • 96. Rode a App e selecione uma Prova M.Sc. Márcio Palheta 96/98
  • 97. Referências ● www.caelum.com.br ● d.android.com ● ● LECHETA, Ricardo. Google Android, 3a edição, Novatec, São Paulo, 2013 Código fonte completo: https://github.com/marciopalheta/cursosandroid M.Sc. Márcio Palheta 97/98