Lezione 3 · Android Corso Base. Maurizio Cozzetto, Francesco Sarasini. Tipi di Menu ......

Post on 19-Feb-2019

220 views 1 download

transcript

Corso Base

Maurizio Cozzetto, Francesco Sarasini

Lezione 3

Menu“Menus are an important part of an application that provide a familiarfamiliar interfaceinterface for the user to access application functions and settings.”

Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

Tipi di Menu

● Options Menu

● Icon Menu

● Expanded Menu

● Context Menu

● Submenu

Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

Icon Menu (1/2)“The menu items visible at the bottom of the screen at the press of the MENUMENU key.”

Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

Icon Menu (2/2)

● Un solo Icon Menu per ogni attività● Non può contenere elementi avanzati come le caselle di spunta e i bottoni radio● Può contenere al massimo 6 elementi

Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

Expanded Menu“The vertical list of menu items exposed by the 'MoreMore' menu item in the Icon Menu.”

Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

Programmare un Icon Menu (1/4)

● Si crea un file xml all'interno della directory res/menu

● Si crea il menu con gli elementi <menu>, <item> e <group>

Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

Programmare un Icon Menu (2/4)

Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="..."> <item android:id="@+id/new_game" android:icon="@drawable/ic_new_game" android:title="@string/new_game" /> <item android:id="@+id/quit" android:icon="@drawable/ic_quit" android:title="@string/quit" /></menu>

game_menu.xml

Programmare un Icon Menu (3/4)

@Overridepublic boolean onCreateOptionsMenu(Menu menu) {

// otteniamo un “MenuInflater” dal contesto MenuInflater inflater = getMenuInflater();

// carichiamo game_menu.xml nell'oggetto menuinflater.inflate(R.menu.game_menu, menu);

return true;}

Metodo dell'Activity richiamato quando l'utentepreme il tasto MENU

Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

Programmare un Icon Menu (4/4)

@Overridepublic boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); switch (id) { case R.id.new_game: //...

break; case R.id.quit: // ... break; } return true;}

Metodo richiamato quando l'utente sceglieuna voce del menu

Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

Context Menu“A floating list of menu items that appears when the user performs a long-presslong-press on a View. ”

Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

Programmare un Context Menu via XML (1/4)@Overridepublic void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); setContentView(R.layout.main);

ImageView image = (ImageView)findViewById(R.id.gingerdroid);

registerForContextMenu(image); } // fine metodo

Registrazionedella View

Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

Programmare un Context Menu via XML (2/4)@Overridepublic void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {

super.onCreateContextMenu(menu, v, menuInfo);

// uso un oggetto Inflater MenuInflater inflater = getMenuInflater();

inflater.inflate(R.menu.mio_menu, menu); } // fine metodo

Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

Metodo dell'Activity di creazione del menucontestuale

Programmare un Context Menu via XML (3/4)<menu ...> <item android:id="@+id/save" ... /><item android:id="@+id/view" ... />

<item android:id="@+id/sottomenu"><menu> <item android:id="@+id/paperino" /> <item android:id="@+id/topolino" /></menu>

</item>

</menu>

File mio_menu.xml

Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

Programmare un Context Menu via XML (4/4)@Overridepublic boolean onContextItemSelected(MenuItem item) {

int id = item.getItemId();switch (id) {case R.id.save:

// ...break;

// caso view ...case R.id.paperino:

// ...break;

...}return true;

}} // fine metodo

Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

Metodo richiamato quando è selezionatauna voce del menu

Sub Menu“A floating listfloating list of menu items that the user opens by pressing a menu item in the Options MenuOptions Menu or a Context menu.”

Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

Programmare un Sub Menu via XML (1/3)// Inflate di un Icon Menu@Overridepublic boolean onCreateOptionsMenu(Menu menu) {

MenuInflater inflater = new MenuInflater(this);inflater.inflate(R.menu.mio_menu, menu);return true;

}

@Overridepublic boolean onOptionsItemSelected(MenuItem item) {

if (item.isCheckable()) {item.setChecked(!item.isChecked());

}return true;

} // fine metodo

Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

Gestione checkbox e option button

Programmare un Sub Menu via XML (2/3)<menu>

<item ... android:id="@+id/menu1"><menu>

<group android:id="@+id/group1" ...><item android:id="@+id/item11" ... /><item android:id="@+id/item12" ... /><item android:id="@+id/item13" ... />

</group></menu>

</item>

// continua...

Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

File mio_menu.xmlSottomenu1

Programmare un Sub Menu via XML (3/3)

<item android:title="..." android:id="@+id/menu2"><menu>

<group android:id="@+id/group2" ...><item android:id="@+id/item21" ... /><item android:id="@+id/item22" ... /><item android:id="@+id/item23" ... />

</group></menu>

</item></menu>

Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

File mio_menu.xmlSottomenu2

Icone menu standard (alcune)

Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

ic_menu_add

ic_menu_delete

ic_menu_edit

ic_menu_cancel

ic_menu_search

ic_menu_info_details

ic_menu_refresh

ic_menu_manage

ic_menu_sort_by_size

ic_menu_help

android:icon="@android:drawable/ic_menu_add"

Corso Base

Maurizio Cozzetto, Francesco Sarasini

5 minuti di pausa