Home > Guide e tutorial per Android > Guida programmazione Android – Lezione 13: Menù

Guida programmazione Android – Lezione 13: Menù

Lezione13

Lezione13Oggi vedremo come creare un menù all’interno della nostra applicazione e come modificare dinamicamente il layout a seconda delle opzioni selezionate.

Creiamo come sempre un nuovo progetto (new Android Application Project), e lo chiamiamo menu (non menù, senza accento e senza molta fantasia).

Creiamo ora il layout: l’idea è avere un ImageView nella quale viene visualizzata un’immagine differente a seconda della selezione. Creiamo perciò la cartella drawable e carichiamo queste 2 immagini (M e F). Inseriamone una, ad esempio m.png, che sarà la nostra immagine di default.

screen layout menu

Occupiamoci ora del menù: Eclipse dovrebbe avervi creato in automatico la cartella menu con al suo interno il file main.xml, e non solo: infatti nel file MainActivity.java dovremmo trovare queste righe di codice, ignorate o eliminate nelle scorse lezioni:

@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

Con questo caricheremo il menu alla pressione del tasto fisico (o in alcuni smartphone touch) corrispondente sul terminale. Apriamo il file main.xml e scriviamo:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/m"
        android:title="M"/>
    <item
        android:id="@+id/f"
        android:title="F"/>

</menu>

Appariranno così nel menù 2 scelte. Ora dobbiamo specificare le azioni da intraprendere a seconda della scelta. Per questo il file MainActivity.java apparirà così:

package com.example.menu;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageView;

public class MainActivity extends Activity {

	ImageView m_f;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		m_f=(ImageView)findViewById(R.id.imageView1);

	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch ( item.getItemId() ) {
		case R.id.m:
			m_f.setImageResource(R.drawable.m);
			return true;

		case R.id.f:
			m_f.setImageResource(R.drawable.f);
			return true;

		}
		return false;
	}
}

Il metodo onOptionItemSelected() viene invocato appena si sceglie una delle 2 opzioni. Il costrutto switch-case è un costrutto Java per intraprendere azioni differenti a seconda dei casi, e il metodo setImageResource() serve per cambiare il campo src di una ImageView dinamicamente.

Naturalmente questo è solo un esempio di utilizzo dei menù, potete sbizzarrirvi e in modo simile effettuare azioni differenti quali aprire una nuova activity (vedi Lezione5), ecc…

Puoi guardare tutte le lezioni passate consultando l’indice del corso di programmazione android