COMPUTAÇÃO MÓVEL
Prof.: Jean Carlo Mendes
[email protected]
[email protected]
http://www.mendesnet.com.br
Android – Interface com usuário
• Todos os elementos da interface são
baseados nos objetos View e ViewGroup
• View: Objeto que desenha algo na tela
com o qual o usuário interage
• ViewGroup: Objeto que suporta outras
Views (ou ViewGroups) para definir seu
layout
Android – View e ViewGroup
• A interface de cada componente do App é
definida usando a hierarquia de
ViewGroup e View.
• Cada ViewGroup é um container invisível
que organiza Views filhas
Android – Layouts
• Um layout define a estrutura visual para a
interface com o usuário
• Pode ser definido de duas formas
• Declarado através de arquivo XML
• Instanciado via código em tempo de
execução
• Declarar em XML é mais vantajoso
(desacopla visual e programação)
Android – Views - Atributos
• ID: Todo objeto View possui um atributo
ID associado a ele
• O formato da atributo é
• Android:id=“@+id/nome”
• O símbolo arroba indica que o parser XML
deve expandir o resto do texto e trata-lo
como um recurso
• O símbolo “+” significa que este é um
recurso novo que deve ser criado e
adicionado no arquivo de recursos (R.java)
Android – Posição do Layout
• A view é baseada em retângulo
• A localização da view é dada por
coordenadas left – top e duas dimensões
(width e height) – (unidade é pixel)
Android – Layouts comuns
• Linear Layout
• Relative Layout
• Web View
Android – Linear Layout
• É um ViewGroup que alinha todos os
filhos em uma direção única (vertical ou
horizontal)
• Você pode especificar a direção usando o
atributo android:orientation
Android – Linear Layout - weight
• O LinearLayout suporta a atribuição de “peso”
para determinado elemento filho (usando o
atributo android:layout_weight)
• Um peso maior faz com que o elemento possa
ser expandido para ocupar área livre na tela
• O peso padrão é zero
• Elemento sem peso terá como tamanho padrão
o tamanho necessário para sua exibição
Android – Relative Layout
• É um ViewGroup que alinha os filhos em
posições relativas. A posição de cada
view pode ser especificada em relação a
elementos “irmãos” ou em relação à área
de seu “pai”
Android – Relative Layout - Posicionamento
• Com o layout relativo podemos alinhar
dois elementos pela borda direita, colocar
um abaixo do outro, centralizar na tela,
etc
• Por padrão os elementos filhos são
desenhados à partir da borda esquerda
superior do layout
Android – Relative Layout - Posicionamento
• Android:layout_alignParentTop  Se true, faz com que
a borda superior desta view case com a borda superior
do “pai”
• Android:layout_centerVertical  Se true, faz com que o
elemento se alinhe com o centro do seu “pai”
• Android:layout_below  Posiciona a borda superior do
elemento abaixo do elemento especificado (ID)
• Android:layout_toRightOf  Posiciona a borda superior
do elemento à direita do elemento especificado (ID)
• Para ver todas as possibilidades, clique aqui
Android – Controles de Entrada
• São os componentes interativos dentro
da interface com o usuário
• Para adicionar um controle à UI basta
adiciona-lo ao arquivo XML de Layout
Android – Botão
• Consiste em um texto ou ícone (ou
ambos) que comunica qual ação ocorre
quando o usuário o toca (tap)
Android – Botão – com texto
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_text"
... />
Android – Botão – imagem
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/button_icon"
... />
Android – Botão – imagem e texto
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_text"
android:drawableLeft="@drawable/button_icon"
... />
Android – Botão – respondendo a cliques
<?xml version="1.0" encoding="utf-8"?>
<Button
xmlns:android="http://schemas.android.com/apk
/res/android"
android:id="@+id/button_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:onClick="sendMessage" />
Android – Botão – dentro da activity
/** Chamado quando o usuário toca o botão*/
public void sendMessage(View view) {
// Do something in response to button click
}
Android – Botão – ou.... Adiciona o
listener
Button button = (Button)
findViewById(R.id.button_send);
button.setOnClickListener(new
View.OnClickListener() {
public void onClick(View v) {
// Do something in response to button click
}
});
Android – Botão
A aparência do botão pode ser customizada..
Pode ser sem borda....
<Button
android:id="@+id/button_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:onClick="sendMessage"
style="?android:attr/borderlessButtonStyle" />
Android – Botão
• Pode ter background totalmente customizado
• Para isto um XML contendo as referencias
para as imagens padrão, pressionado e com
foco deve ser criado em res/drawable (onde
deve também constar as imagens)
Android – Botão
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/andr
oid">
<item android:drawable="@drawable/button_pressed"
android:state_pressed="true" />
<item android:drawable="@drawable/button_focused"
android:state_focused="true" />
<item android:drawable="@drawable/button_default"
/>
</selector>
Android – Botão
<Button
android:id="@+id/button_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:onClick="sendMessage"
android:background="@drawable/btn_customizado
" />
Android – Text Field
• Campo de texto editável.
• Pode-se usar um widget AutoCompleteTextView
para prover funcionalidade de auto completar
• Pode ser single line ou multi line
• Tocar o Text Field faz o teclado virtual ser
ativado
Android – Text Field – Tipo de teclado
• O tipo de teclado pode ser especificado
<EditText
android:id="@+id/email_address"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/email_hint"
android:inputType="textEmailAddress" />
Android – Text Field – Tipo de teclado
• “text”: teclado normal de texto
• textEmailAddress: teclado normal de texto +
símbolo @
• textUri: teclado normal de texto + símbolo /
• Number: teclado numérico básico
• Phone: teclado padrão “Telefone”
Android – Text Field – outros
comportamentos
• “textCapSentences”: teclado normal de texto
que torna a primeira letra de cada frase em
maiusculo
• “textCapWord”: teclado normal de texto que
torna a primeira letra de cada palavraem
maiusculo Phone: teclado padrão “Telefone”
• “textPassword”
• “textMultiine”
Android – Text Field – outros
comportamentos - combinados
<EditText
android:id="@+id/postal_address"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/postal_address_hint"
android:inputType="textPostalAddress|
textCapWords|
textNoSuggestions" />
Android – Ações do teclado
• Você pode especificar a ação a ser tomada
quando o usuário terminar o preenchimento do
campo (android:imeOptions)
<EditText
android:id="@+id/search"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/search_hint"
android:inputType="text"
android:imeOptions="actionSend" />
Android – Respondendo ação
EditText editText = (EditText) findViewById(R.id.search);
editText.setOnEditorActionListener(new
OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
boolean handled = false;
if (actionId == EditorInfo.IME_ACTION_SEND) {
sendMessage();
handled = true;
}
return handled;
}
});
Android – Sugestão de auto-completar
• Deve-se usar uma subclasse da EditText
chamada AutoCompleteTextView
• Deve-se especificar um “Adapter” de onde o
texto sugerido será buscado
(android.widget.Adapter)
• Sugestões podem vir de um BD ou de um vetor
de valores, por exemplo
Android – Sugestão de auto-completar
<?xml version="1.0" encoding="utf-8"?>
<AutoCompleteTextView
xmlns:android="http://schemas.android.com/apk/r
es/android"
android:id="@+id/autocomplete_country"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
Android – res/values/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="countries_array">
<item>Afghanistan</item>
<item>Albania</item>
<item>Algeria</item>
<item>American Samoa</item>
<item>Andorra</item>
<item>Angola</item>
<item>Anguilla</item>
<item>Antarctica</item>
...
</string-array>
</resources>
Android –Activty ou fragment...
AutoCompleteTextView textView =
(AutoCompleteTextView)
findViewById(R.id.autocomplete_country);
// Busca as strings
String[] countries =
getResources().getStringArray(R.array.countries_
array);
// Cria o adapter e liga ao AutoCompleteTextView
ArrayAdapter<String> adapter =
new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, countries);
textView.setAdapter(adapter);
Download

Banco de Dados - Jean Carlo Mendes