Elementos de UI
Menus Dialogs Action bar Notifications
06/09/2012
Menus
Menus
Android oferece trs tipos de menu
Options Menu
Menu padro de aplicaes Android
Context Menu
Menu flutuante e contextual
Popup menu
???
06/09/2012
Options Menu
Modelo principal de menus no android Diretamente relacionado ao Activity em execuo Ativado pelo boto MENU do aparelho ou na barra de aes (em aparelhos que rodam Android 3.x).
A partir do Android 3.0 (API level 11), os aparelhos no so obrigados a ter um boto dedicado opo de Menu
Aparece na parte inferior da tela (Android 2.x) ou na barra de aes (Android 3.x)
Options Menu
Android 2.x
O menu de opes s apresenta 6 itens de menu. Se a quantidade de itens for maior que 6, a opo More automaticamente adicionada.
06/09/2012
Options Menu
Android 3.x
Action Bar
Options Menu
Quando o Android cria o Options Menu, o mtodo onCreateOptionsMenu() da atividade em execuo invocado Para definir o menu de sua atividade basta redefinir esse mtodo
private int MENU_ADD = 1; private int MENU_RESET = 2; @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(Menu.NONE, MENU_ADD, Menu.NONE, "Add") .setIcon(R.drawable.ic_menu_add); menu.add(Menu.NONE, MENU_RESET, Menu.NONE, "Reset") .setIcon(R.drawable.ic_menu_refresh); return(super.onCreateOptionsMenu(menu)); }
Assinatura do mtodo: add(int groupId, int itemId, int order, CharSequence title)
06/09/2012
Options Menu
06/09/2012
Menu XML
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/new_game" android:icon="@drawable/ic_new_game" android:title="@string/new_game" /> <item android:id="@+id/help" android:icon="@drawable/ic_help" android:title="@string/help" /> </menu>
menu_basico.xml
@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_basico, menu); return true; }
06/09/2012
@Override public boolean onOptionsItemSelected(MenuItem item) { // Handle item selection switch (item.getItemId()) { case R.id.new_game: newGame(); return true; case R.id.help: showHelp(); return true; default: return super.onOptionsItemSelected(item); } }
No Android 3.0 e superior, voc deve chamar o mtodo invalidateOptionsMenu() quando quiser atualizar o menu
O Android chamar o onPrepareOptionsMenu()
06/09/2012
Context Menu
Similar aos menus contextuais em PCs que so ativados ao se clicar com o boto direito do mouse
No Android eles so ativados por um pressionamento demorado em um componente visual
06/09/2012
Flutuante
Modelo padro de menu contextual
2.
Action mode
Disponvel a partir do Android 3 (API 11)
(1)
(2)
2.
3.
Registrar a view atravs do mtodo registerForContextMenu() Redefinir o mtodo onCreateContextMenu() da Activity para definir o menu Redefinir o mtodo onContextItemSelected() para tratar as aes de clique
06/09/2012
OU
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.context_menu, menu); }
10
06/09/2012
2.
11
06/09/2012
Submenu
Menu que o usurio pode abrir a partir da seleo de um item de outro menu til quando um sistema tem muitas opes de menu Android no permite submenus aninhados
Definindo submenus
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/file" android:icon="@drawable/file" android:title="@string/file" > <!-- "file" submenu --> <menu> <item android:id="@+id/create_new" android:title="@string/create_new" /> <item android:id="@+id/open" android:title="@string/open" /> </menu> </item> </menu>
12
06/09/2012
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android:checkableBehavior="single"> <item android:id="@+id/red" android:title="@string/red" /> <item android:id="@+id/blue" android:title="@string/blue" /> </group> </menu>
Dialogs
13
06/09/2012
Dialogs
Android possui os seguintes tipos de Dialogs implementados
AlertDialog ProgressDialog DatePickerDialog TimePickerDialog
Criando um Dialog
Deve-se redefinir os mtodos:
onCreateDialog(int)
Chamado uma nica vez, quando o Dialog criado Deve-se instanciar o Dialog e retorn-lo
onPrepareDialog(int, Dialog)
Chamado toda vez que o Dialog aberto Pode-se alterar informaes do Dialog
14
06/09/2012
Criando um Dialog
protected Dialog onCreateDialog(int id) { Dialog dialog; switch(id) { case DIALOG_PAUSED_ID: // do the work to define the pause Dialog break; case DIALOG_GAMEOVER_ID: // do the work to define the game over Dialog break; default: dialog = null; } return dialog; }
Mostrando um Dialog
Deve-se chamar o mtodo showDialog(int) no momento em que se deseja mostrar o Dialog
showDialog(DIALOG_PAUSED_ID);
15
06/09/2012
Criando um AlertDialog
AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("Are you sure you want to exit?") .setCancelable(false) .setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { MyActivity.this.finish(); } }) .setNegativeButton("No", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog alert = builder.create();
Criando um ProgressDialog
ProgressDialog dialog = ProgressDialog.show(MyActivity.this, "", "Loading. Please wait...", true);
16
06/09/2012
Criando um DatePicker
Action bar
Widget que substitui a barra de ttulo tradicional em aplicaes Android 3.X
Options Menu Ttulo da Activity
Logo da Aplicao
Itens de ao
17
06/09/2012
ou
ActionBar actionBar = getActionBar(); actionBar.hide();
Adicionando itens de ao
Itens do Options Menu podem aparecer como itens de ao
Menu em XML
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/menu_save" android:icon="@drawable/ic_menu_save" android:title="@string/menu_save" android:showAsAction="ifRoom|withText" /> <item android:id="@+id/menu_delete" android:icon="@drawable/ic_menu_delete" android:title="@string/menu_delete" android:showAsAction="ifRoom|withText" /> </menu>
18
06/09/2012
Notifications
Alm do uso de Dialogs, existem mais duas formas de notificar o usurio
Toast Notifications
19
06/09/2012
Toast Notifications
Mensagens de popup que aparecem e desaparecem automaticamente No permitem interao com usurio Podem ser geradas por Activities e Services
Context context = getApplicationContext(); CharSequence text = "Hello toast!"; int duration = Toast.LENGTH_SHORT; Toast toast = Toast.makeText(context, text, duration); toast.show();
2. 3. 4.
Obter uma referncia para o NotificationManager Criar uma instncia de Notification Definir a mensagem expandida e o Intent Passar a instncia de Notification para o NotificationManager
20
06/09/2012
int icon = R.drawable.notification_icon; CharSequence tickerText = "Hello"; long when = System.currentTimeMillis(); Notification notification = new Notification(icon, tickerText, when);
21
06/09/2012
22
06/09/2012
FIM
23