SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
Componentização e
        padrões de
 projeto e interface
        em Android
           Welington Silva
     welington.silva@cesar.org.br
Componentização


                G
16/02/2012             2
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

             <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
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
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
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 componente



16/02/2012               Componentização e padrões de projeto e interface               10
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
Padrões de projeto




16/02/2012                12
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


                                                                          1




source                                                               listener


16/02/2012        Componentização e padrões de projeto e interface              14
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
Padrões de interface




16/02/2012                  16
Quais?
• Dashboard

• Action Bar

• Search Bar

• Quick Actions

• Companion Widgets

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

• Destaca conteúdo

• Tela toda

• Organizada por

      – Função, categoria ou perfil

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

• Operações usadas com frequência

• Topo da tela

• Geralmente oferece

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

16/02/2012               Componentização e padrões de projeto e interface   19
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
Search Bar
• Busca (... Não me diga!)

• Substitui action bar, se houver

• Autocompletar




16/02/2012        Componentização e padrões de projeto e interface   21
Companion widget
• Conteúdo da aplicação na tela inicial

• Tela inicial personalizada




16/02/2012        Componentização e padrões de projeto e interface   22
Isso é tudo pessoal!




             Welington Silva, welington.silva@cesar.org.br

16/02/2012                                              23

Contenu connexe

Tendances

Aula 1- Fundamentos da computação móvel
Aula 1- Fundamentos da computação móvelAula 1- Fundamentos da computação móvel
Aula 1- Fundamentos da computação móvelJanynne Gomes
 
Introdução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidIntrodução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidJosé Alexandre Macedo
 
Desenvolvimento Mobile
Desenvolvimento MobileDesenvolvimento Mobile
Desenvolvimento MobileElton Minetto
 
Android - Programação para dispositivos móveis (Aula 1)
Android - Programação para dispositivos móveis (Aula 1)Android - Programação para dispositivos móveis (Aula 1)
Android - Programação para dispositivos móveis (Aula 1)Ricardo Longa
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasRodrigo Branas
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVAMoises Omena
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVAMoises Omena
 
Testes de Software
Testes de SoftwareTestes de Software
Testes de SoftwareCapgemini
 
Tópicos Especiais em Engenharia de Software
Tópicos Especiais em Engenharia de SoftwareTópicos Especiais em Engenharia de Software
Tópicos Especiais em Engenharia de SoftwareRogerio P C do Nascimento
 
"Bom" e "Mau" Design
"Bom" e "Mau" Design"Bom" e "Mau" Design
"Bom" e "Mau" DesignLina Morgado
 
Sistemas de controle de versão
Sistemas de controle de versãoSistemas de controle de versão
Sistemas de controle de versãoMarcos Pessoa
 
Aula 1 - Introdução ao Mobile
Aula 1 - Introdução ao MobileAula 1 - Introdução ao Mobile
Aula 1 - Introdução ao MobileCloves da Rocha
 
UX UI para Programadores
UX UI para Programadores UX UI para Programadores
UX UI para Programadores Monica Mesquita
 
Prática de laboratório utilizando views, stored procedures e triggers
Prática de laboratório   utilizando views, stored procedures e triggersPrática de laboratório   utilizando views, stored procedures e triggers
Prática de laboratório utilizando views, stored procedures e triggersDaniel Maia
 

Tendances (20)

Aula 1- Fundamentos da computação móvel
Aula 1- Fundamentos da computação móvelAula 1- Fundamentos da computação móvel
Aula 1- Fundamentos da computação móvel
 
MVC
MVCMVC
MVC
 
Introdução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidIntrodução ao Desenvolvimento Android
Introdução ao Desenvolvimento Android
 
Desenvolvimento Mobile
Desenvolvimento MobileDesenvolvimento Mobile
Desenvolvimento Mobile
 
Android - Programação para dispositivos móveis (Aula 1)
Android - Programação para dispositivos móveis (Aula 1)Android - Programação para dispositivos móveis (Aula 1)
Android - Programação para dispositivos móveis (Aula 1)
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de Requisitos
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Curso de Node JS Básico
Curso de Node JS BásicoCurso de Node JS Básico
Curso de Node JS Básico
 
Testes de Software
Testes de SoftwareTestes de Software
Testes de Software
 
Tópicos Especiais em Engenharia de Software
Tópicos Especiais em Engenharia de SoftwareTópicos Especiais em Engenharia de Software
Tópicos Especiais em Engenharia de Software
 
"Bom" e "Mau" Design
"Bom" e "Mau" Design"Bom" e "Mau" Design
"Bom" e "Mau" Design
 
Sistemas de controle de versão
Sistemas de controle de versãoSistemas de controle de versão
Sistemas de controle de versão
 
Metodologia Ágil
Metodologia ÁgilMetodologia Ágil
Metodologia Ágil
 
Arquitetura orientada a serviços (SOA)
Arquitetura orientada a serviços (SOA)Arquitetura orientada a serviços (SOA)
Arquitetura orientada a serviços (SOA)
 
Aula 1 - Introdução ao Mobile
Aula 1 - Introdução ao MobileAula 1 - Introdução ao Mobile
Aula 1 - Introdução ao Mobile
 
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de SoftwareFundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
 
UX UI para Programadores
UX UI para Programadores UX UI para Programadores
UX UI para Programadores
 
Prática de laboratório utilizando views, stored procedures e triggers
Prática de laboratório   utilizando views, stored procedures e triggersPrática de laboratório   utilizando views, stored procedures e triggers
Prática de laboratório utilizando views, stored procedures e triggers
 

En vedette

Padrões de projeto para o Android - Interação para desenvolvedores
Padrões de projeto para o Android - Interação para desenvolvedoresPadrões de projeto para o Android - Interação para desenvolvedores
Padrões de projeto para o Android - Interação para desenvolvedoresGustavo Bitencourt
 
Projeto de Interfaces - Aula 03
Projeto de Interfaces - Aula 03Projeto de Interfaces - Aula 03
Projeto de Interfaces - Aula 03Carlos Rosemberg
 
Projeto de Interfaces - Aula 02
Projeto de Interfaces - Aula 02Projeto de Interfaces - Aula 02
Projeto de Interfaces - Aula 02Carlos Rosemberg
 
Introdução a Plataforma Android
Introdução a Plataforma AndroidIntrodução a Plataforma Android
Introdução a Plataforma AndroidÉdipo Souza
 
Projeto de Interfaces - Aula 01
Projeto de Interfaces - Aula 01Projeto de Interfaces - Aula 01
Projeto de Interfaces - Aula 01Carlos Rosemberg
 
SISTEMA OPERATIVO IOS
SISTEMA OPERATIVO IOSSISTEMA OPERATIVO IOS
SISTEMA OPERATIVO IOSAna Morales
 
Primeiros passos no iOS com Objective-C
Primeiros passos no iOS com Objective-CPrimeiros passos no iOS com Objective-C
Primeiros passos no iOS com Objective-Cosnipso
 
Desenvolvendo para iOS em linux
Desenvolvendo para iOS em linuxDesenvolvendo para iOS em linux
Desenvolvendo para iOS em linuxErisvaldo Junior
 
Desenvolvimento de Apps e Games para iOS - Parte 2
Desenvolvimento de Apps e Games para iOS - Parte 2Desenvolvimento de Apps e Games para iOS - Parte 2
Desenvolvimento de Apps e Games para iOS - Parte 2Erisvaldo Junior
 
Sistema Operacional Móvel iOS
Sistema Operacional Móvel iOSSistema Operacional Móvel iOS
Sistema Operacional Móvel iOSDj Black
 
Sistema Operacional Android
Sistema Operacional AndroidSistema Operacional Android
Sistema Operacional AndroidLucas Damasceno
 
Plataforma iOS
Plataforma iOSPlataforma iOS
Plataforma iOSernandesjr
 
Introdução à plataforma Android
Introdução à plataforma AndroidIntrodução à plataforma Android
Introdução à plataforma AndroidNatanael Fonseca
 
Sistema Operativo iOS
Sistema Operativo iOSSistema Operativo iOS
Sistema Operativo iOSjatzen01
 
IOS sistema operacional
IOS sistema operacionalIOS sistema operacional
IOS sistema operacionalHamburg Süd
 
SISTEMA OPERATIVO IOS
SISTEMA OPERATIVO IOSSISTEMA OPERATIVO IOS
SISTEMA OPERATIVO IOSTenshiDam
 

En vedette (20)

Padrões de projeto para o Android - Interação para desenvolvedores
Padrões de projeto para o Android - Interação para desenvolvedoresPadrões de projeto para o Android - Interação para desenvolvedores
Padrões de projeto para o Android - Interação para desenvolvedores
 
Projeto de Interfaces - Aula 03
Projeto de Interfaces - Aula 03Projeto de Interfaces - Aula 03
Projeto de Interfaces - Aula 03
 
Projeto de Interfaces - Aula 02
Projeto de Interfaces - Aula 02Projeto de Interfaces - Aula 02
Projeto de Interfaces - Aula 02
 
Introdução a Plataforma Android
Introdução a Plataforma AndroidIntrodução a Plataforma Android
Introdução a Plataforma Android
 
Projeto de Interfaces - Aula 01
Projeto de Interfaces - Aula 01Projeto de Interfaces - Aula 01
Projeto de Interfaces - Aula 01
 
SISTEMA OPERATIVO IOS
SISTEMA OPERATIVO IOSSISTEMA OPERATIVO IOS
SISTEMA OPERATIVO IOS
 
Primeiros passos no iOS com Objective-C
Primeiros passos no iOS com Objective-CPrimeiros passos no iOS com Objective-C
Primeiros passos no iOS com Objective-C
 
Desenvolvendo para iOS em linux
Desenvolvendo para iOS em linuxDesenvolvendo para iOS em linux
Desenvolvendo para iOS em linux
 
Desenvolvimento de Apps e Games para iOS - Parte 2
Desenvolvimento de Apps e Games para iOS - Parte 2Desenvolvimento de Apps e Games para iOS - Parte 2
Desenvolvimento de Apps e Games para iOS - Parte 2
 
Sistema Operacional Móvel iOS
Sistema Operacional Móvel iOSSistema Operacional Móvel iOS
Sistema Operacional Móvel iOS
 
Google android pdf
Google android pdfGoogle android pdf
Google android pdf
 
Sistema Operacional Android
Sistema Operacional AndroidSistema Operacional Android
Sistema Operacional Android
 
Plataforma iOS
Plataforma iOSPlataforma iOS
Plataforma iOS
 
SISTEMA OPERATIVO IOS
SISTEMA OPERATIVO IOSSISTEMA OPERATIVO IOS
SISTEMA OPERATIVO IOS
 
Introdução à plataforma Android
Introdução à plataforma AndroidIntrodução à plataforma Android
Introdução à plataforma Android
 
Sistema Operativo iOS
Sistema Operativo iOSSistema Operativo iOS
Sistema Operativo iOS
 
Sistema Operacional iOS
Sistema Operacional iOSSistema Operacional iOS
Sistema Operacional iOS
 
Android - Conceito e Arquitetura
Android - Conceito e ArquiteturaAndroid - Conceito e Arquitetura
Android - Conceito e Arquitetura
 
IOS sistema operacional
IOS sistema operacionalIOS sistema operacional
IOS sistema operacional
 
SISTEMA OPERATIVO IOS
SISTEMA OPERATIVO IOSSISTEMA OPERATIVO IOS
SISTEMA OPERATIVO IOS
 

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

Vue - Básico sobre Vue [1 de 2 - 2020]
Vue - Básico sobre Vue [1 de 2 - 2020]Vue - Básico sobre Vue [1 de 2 - 2020]
Vue - Básico sobre Vue [1 de 2 - 2020]Danilo Pinotti
 
06-engenharia de softwere Análise e Projeto de Software.docx
06-engenharia de softwere Análise e Projeto de Software.docx06-engenharia de softwere Análise e Projeto de Software.docx
06-engenharia de softwere Análise e Projeto de Software.docxJulioCesar371362
 
O básico sobre Vue 2. Talk Vue Básico 1/3
O básico sobre Vue 2. Talk Vue Básico 1/3O básico sobre Vue 2. Talk Vue Básico 1/3
O básico sobre Vue 2. Talk Vue Básico 1/3Danilo Pinotti
 
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgePadrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgeLorran Pegoretti
 
Adobe flash platform fabricio
Adobe flash platform fabricioAdobe flash platform fabricio
Adobe flash platform fabricioFabricioManzi
 
Adobe flash platform bem 2009
 Adobe flash platform bem 2009 Adobe flash platform bem 2009
Adobe flash platform bem 2009FabricioManzi
 
Paper NOVL - Naked Objects View Language- InfoBrasil 2012
Paper NOVL - Naked Objects View Language- InfoBrasil 2012Paper NOVL - Naked Objects View Language- InfoBrasil 2012
Paper NOVL - Naked Objects View Language- InfoBrasil 2012Marcius Brandão
 
Solid Edge SP Raihsa
Solid Edge SP Raihsa Solid Edge SP Raihsa
Solid Edge SP Raihsa Raihsa
 
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...Natanael Simões
 
Componentes UI5 - SAP Inside Track Joinville 2015 - Fábio Pagoti
Componentes UI5 - SAP Inside Track Joinville 2015 - Fábio PagotiComponentes UI5 - SAP Inside Track Joinville 2015 - Fábio Pagoti
Componentes UI5 - SAP Inside Track Joinville 2015 - Fábio PagotiFábio Luiz Esperati Pagoti
 
Como criar interfaces gráficas com android
Como criar interfaces gráficas com androidComo criar interfaces gráficas com android
Como criar interfaces gráficas com androidRicardo Ogliari
 
Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012Laís Vidal
 
Construir Aplicações Silverlight para Windows Phone 7
Construir Aplicações Silverlight para Windows Phone 7Construir Aplicações Silverlight para Windows Phone 7
Construir Aplicações Silverlight para Windows Phone 7Pedro Lamas
 

Similaire à Componentização e padrões de projeto e interface em Android (20)

Vue - Básico sobre Vue [1 de 2 - 2020]
Vue - Básico sobre Vue [1 de 2 - 2020]Vue - Básico sobre Vue [1 de 2 - 2020]
Vue - Básico sobre Vue [1 de 2 - 2020]
 
06-engenharia de softwere Análise e Projeto de Software.docx
06-engenharia de softwere Análise e Projeto de Software.docx06-engenharia de softwere Análise e Projeto de Software.docx
06-engenharia de softwere Análise e Projeto de Software.docx
 
O básico sobre Vue 2. Talk Vue Básico 1/3
O básico sobre Vue 2. Talk Vue Básico 1/3O básico sobre Vue 2. Talk Vue Básico 1/3
O básico sobre Vue 2. Talk Vue Básico 1/3
 
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgePadrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e Bridge
 
Adobe flash platform fabricio
Adobe flash platform fabricioAdobe flash platform fabricio
Adobe flash platform fabricio
 
Adobe flash platform bem 2009
 Adobe flash platform bem 2009 Adobe flash platform bem 2009
Adobe flash platform bem 2009
 
Design de Interface - Diretrizes
Design de Interface - DiretrizesDesign de Interface - Diretrizes
Design de Interface - Diretrizes
 
Aula1
Aula1Aula1
Aula1
 
Paper NOVL - Naked Objects View Language- InfoBrasil 2012
Paper NOVL - Naked Objects View Language- InfoBrasil 2012Paper NOVL - Naked Objects View Language- InfoBrasil 2012
Paper NOVL - Naked Objects View Language- InfoBrasil 2012
 
Solid Edge SP Raihsa
Solid Edge SP Raihsa Solid Edge SP Raihsa
Solid Edge SP Raihsa
 
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
Componentes UI5 - SAP Inside Track Joinville 2015 - Fábio Pagoti
Componentes UI5 - SAP Inside Track Joinville 2015 - Fábio PagotiComponentes UI5 - SAP Inside Track Joinville 2015 - Fábio Pagoti
Componentes UI5 - SAP Inside Track Joinville 2015 - Fábio Pagoti
 
Como criar interfaces gráficas com android
Como criar interfaces gráficas com androidComo criar interfaces gráficas com android
Como criar interfaces gráficas com android
 
Curso Básico Android - Aula 01
Curso Básico Android - Aula 01Curso Básico Android - Aula 01
Curso Básico Android - Aula 01
 
Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012
 
Netbeans
NetbeansNetbeans
Netbeans
 
Spring Data Neo4j
Spring Data Neo4jSpring Data Neo4j
Spring Data Neo4j
 
Workshop frontend
Workshop   frontendWorkshop   frontend
Workshop frontend
 
Construir Aplicações Silverlight para Windows Phone 7
Construir Aplicações Silverlight para Windows Phone 7Construir Aplicações Silverlight para Windows Phone 7
Construir Aplicações Silverlight para Windows Phone 7
 

Plus de welingtonms

Status Report - A COGNITIVE PRIVACY FRAMEWORK TO A SMART CITY ARCHITECTURE BA...
Status Report - A COGNITIVE PRIVACY FRAMEWORK TO A SMART CITY ARCHITECTURE BA...Status Report - A COGNITIVE PRIVACY FRAMEWORK TO A SMART CITY ARCHITECTURE BA...
Status Report - A COGNITIVE PRIVACY FRAMEWORK TO A SMART CITY ARCHITECTURE BA...welingtonms
 
Onix, uma plataforma de desenvolvimento para controle distribuído
Onix, uma plataforma de desenvolvimento para controle distribuídoOnix, uma plataforma de desenvolvimento para controle distribuído
Onix, uma plataforma de desenvolvimento para controle distribuídowelingtonms
 
Criptografia, da pré-história às guerras
Criptografia, da pré-história às guerrasCriptografia, da pré-história às guerras
Criptografia, da pré-história às guerraswelingtonms
 
Onix: Uma plataforma de desenvolvimento para controle distribuído
Onix: Uma plataforma de desenvolvimento  para controle distribuídoOnix: Uma plataforma de desenvolvimento  para controle distribuído
Onix: Uma plataforma de desenvolvimento para controle distribuídowelingtonms
 
Mobl, A toolkit to web mobile app development
Mobl, A toolkit to web mobile app developmentMobl, A toolkit to web mobile app development
Mobl, A toolkit to web mobile app developmentwelingtonms
 

Plus de welingtonms (8)

Status Report - A COGNITIVE PRIVACY FRAMEWORK TO A SMART CITY ARCHITECTURE BA...
Status Report - A COGNITIVE PRIVACY FRAMEWORK TO A SMART CITY ARCHITECTURE BA...Status Report - A COGNITIVE PRIVACY FRAMEWORK TO A SMART CITY ARCHITECTURE BA...
Status Report - A COGNITIVE PRIVACY FRAMEWORK TO A SMART CITY ARCHITECTURE BA...
 
Sprint3
Sprint3Sprint3
Sprint3
 
Sprint2
Sprint2Sprint2
Sprint2
 
Sprint1
Sprint1Sprint1
Sprint1
 
Onix, uma plataforma de desenvolvimento para controle distribuído
Onix, uma plataforma de desenvolvimento para controle distribuídoOnix, uma plataforma de desenvolvimento para controle distribuído
Onix, uma plataforma de desenvolvimento para controle distribuído
 
Criptografia, da pré-história às guerras
Criptografia, da pré-história às guerrasCriptografia, da pré-história às guerras
Criptografia, da pré-história às guerras
 
Onix: Uma plataforma de desenvolvimento para controle distribuído
Onix: Uma plataforma de desenvolvimento  para controle distribuídoOnix: Uma plataforma de desenvolvimento  para controle distribuído
Onix: Uma plataforma de desenvolvimento para controle distribuído
 
Mobl, A toolkit to web mobile app development
Mobl, A toolkit to web mobile app developmentMobl, A toolkit to web mobile app development
Mobl, A toolkit to web mobile app development
 

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

  • 1. Componentização e padrões de projeto e interface em Android Welington Silva welington.silva@cesar.org.br
  • 2. Componentização G 16/02/2012 2
  • 3. O que? • {Agregado} de view(s) • Customizável ou não 16/02/2012 Componentização e padrões de projeto e interface 3
  • 4. 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
  • 5. 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
  • 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 componente 16/02/2012 Componentização e padrões de projeto e interface 6
  • 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. 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. 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. 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 componente 16/02/2012 Componentização e padrões de projeto e interface 10
  • 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
  • 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. Listener (Observer) Objetos registram seu interesse em ser notificados em caso de alguma mudança ocorridas em outros objetos 1 source listener 16/02/2012 Componentização e padrões de projeto e interface 14
  • 15. 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
  • 17. Quais? • Dashboard • Action Bar • Search Bar • Quick Actions • Companion Widgets 16/02/2012 Componentização e padrões de projeto e interface 17
  • 18. Dashboard • Revela funções • Destaca conteúdo • Tela toda • Organizada por – Função, categoria ou perfil 16/02/2012 Componentização e padrões de projeto e interface 18
  • 19. Action Bar • Navegação • Operações usadas com frequência • Topo da tela • Geralmente oferece – Busca, atualização, criação, retorno para o dashboard 16/02/2012 Componentização e padrões de projeto e interface 19
  • 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. Search Bar • Busca (... Não me diga!) • Substitui action bar, se houver • Autocompletar 16/02/2012 Componentização e padrões de projeto e interface 21
  • 22. Companion widget • Conteúdo da aplicação na tela inicial • Tela inicial personalizada 16/02/2012 Componentização e padrões de projeto e interface 22
  • 23. Isso é tudo pessoal! Welington Silva, welington.silva@cesar.org.br 16/02/2012 23