android searchframework

18
Android Search Framework Integrando seu app com a busca nativa do Android João Paulo Magalhães @JPMagalhaes_

Upload: jaulomag

Post on 19-Jun-2015

431 views

Category:

Technology


1 download

DESCRIPTION

Lightning Talk apresentado no AndroidRec 2012

TRANSCRIPT

Page 1: Android searchframework

AndroidSearchFrameworkIntegrando seu app com a busca nativa do Android

João Paulo Magalhães@JPMagalhaes_

Page 2: Android searchframework

@JPMagalhaes - AndroidRec 2012

2

Sobre o quê mesmo vamos falar hoje?

28/04/2012

Page 3: Android searchframework

@JPMagalhaes - AndroidRec 2012

3

Agenda Android Search Framework Implementando a busca em seu app Search Dialog SearchWidget Auto-complete/Sugestões customizadas

Quick Search Box Observações

28/04/2012

Page 4: Android searchframework

@JPMagalhaes - AndroidRec 2012

4

Android Search Framework Busca é uma característica essencial

do Android O quê e onde buscar?

Tudo que interessar ao usuário[?!] Conteúdo pode estar armazenado

localmente ou na internet Objetivo:

Criar uma experiência de busca consistente

28/04/2012

Page 5: Android searchframework

@JPMagalhaes - AndroidRec 2012

5

Android Search Framework Ajuda-nos na implementação da busca

Exibindo a view de input Entregando queries para seu app Exibindo os resultados

Não nos ajuda na busca! Nem com nossos dados

Formas de interação Search Dialog SearchView Quick Search Box

28/04/2012

Page 6: Android searchframework

@JPMagalhaes - AndroidRec 2012

6

Implementando a busca em seu app [1/4] Nós precisamos:

searchable.xml SearchActivity Search UI

O processo a partir do SearchButton.onCLick() A interface desejada é criada A cada letra inserida

Uma consulta ao ContentProvider pode ser feita -> Auto-complete/Sugestões Customizadas

OnEnter() Intent de busca é criado pelo sistema Query é inserida SearchActivity é iniciada

28/04/2012

Page 7: Android searchframework

@JPMagalhaes - AndroidRec 2012

7

[2/4] Configurando sua Busca res/xml/searchable.xml

android:label é o único atributo exigido para buscas locais Não é visível Deve ser o nome do app

Neste ponto, nosso app estará visível para buscas Settings -> Searchable items Na verdade, não! android:includeInGlobalSearch="true"

Aceita vários outros atributos Adicionar de acordo com as features desejadas

28/04/2012

Page 8: Android searchframework

@JPMagalhaes - AndroidRec 2012

8

[3/4] Criando uma SearchableActivity Activity que realiza a busca baseada em

uma query e apresenta os resultados

28/04/2012

Page 9: Android searchframework

@JPMagalhaes - AndroidRec 2012

9

[4/4] Nunca esqueça do Manifest.xml!

28/04/2012

Page 10: Android searchframework

@JPMagalhaes - AndroidRec 2012

10

Search Dialog Caixa de busca flutuante

Aparece no topo da tela Botão de busca onSearchRequested()

Nada disso funciona até a busca seja habilitada Em uma atividade específica Para todas as atividades do app

28/04/2012

Page 11: Android searchframework

@JPMagalhaes - AndroidRec 2012

11

[1/2] SearchView widget Android 3.0+ Normalmente colocada na ActionBar Mesmas funcionalidades do Search Dialog

Com um pouco mais de trabalho… Inserir o botão de busca no ActionBar/Menu

res/menu/search_menu.xml

28/04/2012

Page 12: Android searchframework

@JPMagalhaes - AndroidRec 2012

12

[2/2] SearchView widget

28/04/2012

Configurar o SearchView Linkar o componente com nossa

configuração de busca

Page 13: Android searchframework

@JPMagalhaes - AndroidRec 2012

13

Auto-complete/Sugestões customizadas

28/04/2012

Para incluir na Quick Seach Box: android:includeInGlobalSearch="true” Settings -> Searchable items

Ativar a busca em seu app

Page 14: Android searchframework

@JPMagalhaes - AndroidRec 2012

14

[1/3] ObservaçõesContent Provider Igual a qualquer outro Content Provider Deve implementar pelo menos a função

query() Retornando as sugestões em um Cursor

Cada sugestão (linha) retornada deve ter colunas específicas Assim o sistema pode exibir os valores Quais colunas? NEXT!

28/04/2012

Page 15: Android searchframework

@JPMagalhaes - AndroidRec 2012

15

[2/3] ObservaçõesBanco de dados Em geral, uma tabela exclusiva para sugestões

Ou re-utilize uma de suas tabelas Colunas específicas obrigatórias

BaseColumns._ID SearchManager.SUGGEST_COLUMN_TEXT_1 SearchManager.SUGGEST_COLUMN_TEXT_2 …

28/04/2012

Page 16: Android searchframework

@JPMagalhaes - AndroidRec 2012

16

[3/3] ObservaçõesInstanciando a SearchView Implementar OnQueryTextListener

onQueryTextChange(String arg0) onQueryTextSubmit(String query)

searchView.setOnQueryTextListener(this);

28/04/2012

Page 17: Android searchframework

@JPMagalhaes - AndroidRec 2012

17

Referências Android Developers - Search

http://developer.android.com/guide/topics/search/index.html

Apresentação

Código fonte – github

28/04/2012

Page 18: Android searchframework

AndroidSearchFrameworkIntegrando seu app com a busca nativa do Android

João Paulo Magalhaes@JPMagalhaes_