componentização e padrões de projeto e interface em android

23
Componentização e padrões de projeto e interface em Android Welington Silva [email protected]

Upload: welingtonms

Post on 11-Jun-2015

3.068 views

Category:

Documents


6 download

TRANSCRIPT

Componentização e

padrões de

projeto e interface

em Android

Welington Silva

[email protected]

16/02/2012 2

Componentização

G

O que?

• {Agregado} de view(s)

• Customizável ou não

16/02/2012 Componentização e padrões de projeto e interface 3

Por que?

• Facilita a utilização

• Forma de reuso

• Evita duplicação de código

• Concentra a lógica

• Facilita a manutenção

16/02/2012 Componentização e padrões de projeto e interface 4

Quando?

• Aparição recorrente na tela

– Muitos recursos (Imagens, fontes, etc.)

– Muitas telas

– Detalhes de design

– Mesma aparência, configuração

16/02/2012 Componentização e padrões de projeto e interface 5

Como?

• Crie o layout (se necessário)

• Crie a respectiva classe do componente

– Ex.: MyComponent.java

– Infle o layout criado no construtor

– Faça as inicializações e customizações necessárias

– Faça os métodos para controle do seu componente

16/02/2012 Componentização e padrões de projeto e interface 6

Como? Exemplo[0]

• Agregador de botões

button_host_layout.xml

16/02/2012 Componentização e padrões de projeto e interface 7

<LinearLayout

android:id="@+idButtonHost/buttonHost"

android:layout_width="135px"

android:layout_height="334px"

android:orientation="vertical"

android:gravity="center_horizontal|bottom"

android:background="@drawable/fundo_host"

android:padding="2px”

>

</LinearLayout>

Como? Exemplo[1]

ButtonHostComponent.java

16/02/2012 Componentização e padrões de projeto e interface 8

public ButtonSetComponent(Context context) {

super(context);

this.context = context;

inflateLayout();

}

public ButtonSetComponent(Context context,

AttributeSet attrs) {

super(context, attrs);

this.context = context;

inflateLayout();

}

Como? Exemplo[2]

16/02/2012 Componentização e padrões de projeto e interface 9

private void inflateLayout() {

LayoutInflater inflater = (LayoutInflater) context

.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

inflater.inflate(R.layout.button_host_layout, this);

}

public Button addButton(int resStringId, int resBgId,

View.OnClickListener listener) {

Button button = new Button(context);

button.setText(context.getText(resStringId));

button.setBackgroundResource(resBgId);

button.setOnClickListener(listener);

return button;

}

Como? Exemplo[3]

• Incluindo no layout

16/02/2012 Componentização e padrões de projeto e interface 10

<br.example.component.ButtonHostComponent

android:id="@+idMyActivity/buttonHost"

android:layout_width="wrap_content"

android:layout_height=“wrap_content "

/>

Nome completo do pacote

Identificando o componente

Como? Exemplo[4]

• Instanciando

• Recuperando

• Utilizando

16/02/2012 Componentização e padrões de projeto e interface 11

ButtonHostComponent bhc = new

ButtonHostComponent(MyActivity.this);

bhc.addButton(R.string.label, R.drawable.bg,

listener);

ButtonSetComponent b = (ButtonSetComponent)

findViewById(R.idMyActivity.buttonHost);

16/02/2012 12

Padrões de projeto

Definição

” Solução genérica e repetível

para problemas comumente recorrentes”

16/02/2012 Componentização e padrões de projeto e interface 13

Listener (Observer)

Objetos registram seu interesse

em ser notificados em caso de alguma mudança ocorridas em outros objetos

16/02/2012 Componentização e padrões de projeto e interface 14

source listener

1

Factory

Interface de criação de objetos

relacionados ou dependentes,

sem especificar suas classes concretas

16/02/2012 Componentização e padrões de projeto e interface 15

16/02/2012 16

Padrões de interface

Quais?

• Dashboard

• Action Bar

• Search Bar

• Quick Actions

• Companion Widgets

16/02/2012 Componentização e padrões de projeto e interface 17

Dashboard

16/02/2012 Componentização e padrões de projeto e interface 18

• Revela funções

• Destaca conteúdo

• Tela toda

• Organizada por

– Função, categoria ou perfil

Action Bar

16/02/2012 Componentização e padrões de projeto e interface 19

• Navegação

• Operações usadas com frequência

• Topo da tela

• Geralmente oferece

– Busca, atualização, criação, retorno para o dashboard

Quick Action

16/02/2012 Componentização e padrões de projeto e interface 20

• “Pop-up” com funções disponíveis

• Ações explícitas, bem objetivas

• “Fast & Fun”

Search Bar

16/02/2012 Componentização e padrões de projeto e interface 21

• Busca (... Não me diga!)

• Substitui action bar, se houver

• Autocompletar

Companion widget

16/02/2012 Componentização e padrões de projeto e interface 22

• Conteúdo da aplicação na tela inicial

• Tela inicial personalizada

16/02/2012 23

Isso é tudo pessoal!

Welington Silva, [email protected]