Componentização e        padrões de projeto e interface        em Android           Welington Silva     welington.silva@ce...
Componentização                G16/02/2012             2
O que?• {Agregado} de view(s)• Customizável ou não16/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ção16/0...
Quando?• Aparição recorrente na tela      – Muitos recursos (Imagens, fontes, etc.)      – Muitas telas      – Detalhes de...
Como?• Crie o layout (se necessário)• Crie a respectiva classe do componente      – Ex.: MyComponent.java      – Infle o l...
Como? Exemplo[0]• Agregador de botões      button_host_layout.xml             <LinearLayout                    android:id=...
Como? Exemplo[1]      ButtonHostComponent.java             public ButtonSetComponent(Context context) {                   ...
Como? Exemplo[2]private void inflateLayout() {        LayoutInflater inflater = (LayoutInflater) context         .getSyste...
Como? Exemplo[3]• Incluindo no layout                                                       Nome completo do pacote       ...
Como? Exemplo[4]• Instanciando             ButtonHostComponent bhc = new             ButtonHostComponent(MyActivity.this);...
Padrões de projeto16/02/2012                12
Definição               ” Solução genérica e repetível         para problemas comumente recorrentes”16/02/2012           C...
Listener (Observer)         Objetos registram seu interesse  em ser notificados em caso de alguma mudança            ocorr...
Factory                Interface de criação de objetos                relacionados ou dependentes,             sem especif...
Padrões de interface16/02/2012                  16
Quais?• Dashboard• Action Bar• Search Bar• Quick Actions• Companion Widgets16/02/2012        Componentização e padrões de ...
Dashboard• Revela funções• Destaca conteúdo• Tela toda• Organizada por      – Função, categoria ou perfil16/02/2012       ...
Action Bar• Navegação• Operações usadas com frequência• Topo da tela• Geralmente oferece      – Busca, atualização, criaçã...
Quick Action• “Pop-up” com funções disponíveis• Ações explícitas, bem objetivas• “Fast & Fun”16/02/2012        Componentiz...
Search Bar• Busca (... Não me diga!)• Substitui action bar, se houver• Autocompletar16/02/2012        Componentização e pa...
Companion widget• Conteúdo da aplicação na tela inicial• Tela inicial personalizada16/02/2012        Componentização e pad...
Isso é tudo pessoal!             Welington Silva, welington.silva@cesar.org.br16/02/2012                                  ...
Upcoming SlideShare
Loading in …5
×

Componentização e padrões de projeto e interface em Android

3,426 views
3,293 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,426
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
88
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Componentização e padrões de projeto e interface em Android

  1. 1. Componentização e padrões de projeto e interface em Android Welington Silva welington.silva@cesar.org.br
  2. 2. Componentização G16/02/2012 2
  3. 3. O que?• {Agregado} de view(s)• Customizável ou não16/02/2012 Componentização e padrões de projeto e interface 3
  4. 4. Por que?• Facilita a utilização• Forma de reuso• Evita duplicação de código• Concentra a lógica• Facilita a manutenção16/02/2012 Componentização e padrões de projeto e interface 4
  5. 5. Quando?• Aparição recorrente na tela – Muitos recursos (Imagens, fontes, etc.) – Muitas telas – Detalhes de design – Mesma aparência, configuração16/02/2012 Componentização e padrões de projeto e interface 5
  6. 6. 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 componente16/02/2012 Componentização e padrões de projeto e interface 6
  7. 7. Como? Exemplo[0]• Agregador de botões button_host_layout.xml <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>16/02/2012 Componentização e padrões de projeto e interface 7
  8. 8. Como? Exemplo[1] ButtonHostComponent.java public ButtonSetComponent(Context context) { super(context); this.context = context; inflateLayout(); } public ButtonSetComponent(Context context, AttributeSet attrs) { super(context, attrs); this.context = context; inflateLayout(); }16/02/2012 Componentização e padrões de projeto e interface 8
  9. 9. Como? Exemplo[2]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;}16/02/2012 Componentização e padrões de projeto e interface 9
  10. 10. Como? Exemplo[3]• Incluindo no layout Nome completo do pacote <br.example.component.ButtonHostComponent android:id="@+idMyActivity/buttonHost" android:layout_width="wrap_content" android:layout_height=“wrap_content " /> Identificando o componente16/02/2012 Componentização e padrões de projeto e interface 10
  11. 11. Como? Exemplo[4]• Instanciando ButtonHostComponent bhc = new ButtonHostComponent(MyActivity.this);• Recuperando ButtonSetComponent b = (ButtonSetComponent) findViewById(R.idMyActivity.buttonHost);• Utilizando bhc.addButton(R.string.label, R.drawable.bg, listener);16/02/2012 Componentização e padrões de projeto e interface 11
  12. 12. Padrões de projeto16/02/2012 12
  13. 13. 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
  14. 14. Listener (Observer) Objetos registram seu interesse em ser notificados em caso de alguma mudança ocorridas em outros objetos 1source listener16/02/2012 Componentização e padrões de projeto e interface 14
  15. 15. Factory Interface de criação de objetos relacionados ou dependentes, sem especificar suas classes concretas16/02/2012 Componentização e padrões de projeto e interface 15
  16. 16. Padrões de interface16/02/2012 16
  17. 17. Quais?• Dashboard• Action Bar• Search Bar• Quick Actions• Companion Widgets16/02/2012 Componentização e padrões de projeto e interface 17
  18. 18. Dashboard• Revela funções• Destaca conteúdo• Tela toda• Organizada por – Função, categoria ou perfil16/02/2012 Componentização e padrões de projeto e interface 18
  19. 19. Action Bar• Navegação• Operações usadas com frequência• Topo da tela• Geralmente oferece – Busca, atualização, criação, retorno para o dashboard16/02/2012 Componentização e padrões de projeto e interface 19
  20. 20. Quick Action• “Pop-up” com funções disponíveis• Ações explícitas, bem objetivas• “Fast & Fun”16/02/2012 Componentização e padrões de projeto e interface 20
  21. 21. Search Bar• Busca (... Não me diga!)• Substitui action bar, se houver• Autocompletar16/02/2012 Componentização e padrões de projeto e interface 21
  22. 22. Companion widget• Conteúdo da aplicação na tela inicial• Tela inicial personalizada16/02/2012 Componentização e padrões de projeto e interface 22
  23. 23. Isso é tudo pessoal! Welington Silva, welington.silva@cesar.org.br16/02/2012 23

×