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

SCELTI DA NOI PER TE