兄弟連雲Android 學習筆記—菜單

菜單:

       1.Options menu and action bar 選項菜單

      2.Context menu   上下文菜單

      3.Popup menu    彈出式菜單

1.Options menu and action bar 選項菜單

創建選項菜單步驟:

1.覆蓋Activity 的onCreateOptionMenu(Menu menu)方法,當菜單第一次被打開時調用

2.調用Menu的add()方法添加菜單項(MenuItem),同時可以調用MenuItem的setIcon()方法來爲菜單項設置圖標

3.當菜單項(MenuItem)被選擇時,覆蓋Activity的onOptionsItemSelected(MenuItem  item)來響應事件action bar         

***資源文件名必須全用小寫,可以用下劃線隔開,不能數字開頭      

MainActivity.java

package com.example.hello;

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


public class MainActivity extends Activity {

	private static final int START_ITEM = Menu.FIRST;
	private static final int OVER_ITEM = Menu.FIRST + 1;
	private static final int SET_ITEM1 = Menu.FIRST + 2;
	private static final int SET_ITEM2 = Menu.FIRST + 3;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

	//重寫onCreateOptionsMenu方法
	@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);
		// 添加菜單項(組id,菜單id,排序,標題)
		menu.add(0, START_ITEM, 100, "開始");
		menu.add(0, OVER_ITEM, 200, "結束");
		// 添加子菜單
		SubMenu sub1 = menu.addSubMenu("設置");
		sub1.add(1, SET_ITEM1, 300, "設置聲音");
		sub1.add(1, SET_ITEM2, 300, "設置桌面");
		System.out.println("onCreateOptionsMenu...");
		return true;

	}

	// 重寫onOptionItemSelected方法實現菜單選項事件
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// TODO Auto-generated method stub
		System.out.println("onOptionsItemSelected...");
		switch (item.getItemId()) {
		case START_ITEM:
			// R.id.start:
			// 彈框,提示信息
			Toast.makeText(this, "開始遊戲", Toast.LENGTH_SHORT).show();
			break;
		case OVER_ITEM:
			// R.id.over:
			Toast.makeText(this, "結束遊戲", Toast.LENGTH_SHORT).show();
			break;
		case SET_ITEM1:
			// R.id.over:
			Toast.makeText(this, "設置聲音", Toast.LENGTH_SHORT).show();
			break;
		case SET_ITEM2:
			// R.id.over:
			Toast.makeText(this, "設置桌面", Toast.LENGTH_SHORT).show();
			break;
		default:
			break;
		}
		return super.onOptionsItemSelected(item);
	}
}
2..Context menu   上下文菜單

1.覆蓋Activity 的onCreateContextMenu(Menu menu)方法,調用Menu的add()方法添加菜單項(MenuItem)

2.覆蓋Activity的onCreatetextItem Selected(Menu menu)來響應事件

3.調用registerForContextMenu()方法爲視圖註冊上下文菜單

mainActivity2.java

package com.example.hello;

import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.Button;
import android.widget.Toast;

//上下文菜單
public class MainActivity2 extends Activity {

	private Button btn1;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main2);
		// 獲取BUTTON對象
		btn1 = (Button) findViewById(R.id.button1);
		//在button上註冊上下文菜單
		registerForContextMenu(btn1);
	}

	// 創建上下文菜單的方法
	@Override
	public void onCreateContextMenu(ContextMenu menu, View v,
			ContextMenuInfo menuInfo) {
		// TODO Auto-generated method stub
		super.onCreateContextMenu(menu, v, menuInfo);
		getMenuInflater().inflate(R.menu.main2, menu);
	}

	// 上下文觸發事件
	@Override
	public boolean onContextItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case R.id.start:
			Toast.makeText(this, "開始",Toast.LENGTH_SHORT).show();
			break;
		case R.id.over:
			Toast.makeText(this, "結束",Toast.LENGTH_SHORT).show();
			break;
		default:
			break;
		}
		return super.onContextItemSelected(item);
	}
}
  3.Popup menu    彈出式菜單

彈出式菜單是在API 11級或更高級纔有效

mainActivity3.java

package com.example.hello;

import android.app.Activity;
import android.os.Bundle;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.PopupMenu;
import android.widget.Toast;

public class mainActivity3 extends Activity implements android.widget.PopupMenu.OnMenuItemClickListener {
	private Button btn1;
	//彈出式菜單
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main3);
	}
	
	public void showPopupMenu(View v){
		//創建彈出式菜單對象
		PopupMenu popup = new PopupMenu(this,v);
		MenuInflater inflater = popup.getMenuInflater();
		inflater.inflate(R.menu.main3,popup.getMenu());
		//設置菜單項的單擊事件
		popup.setOnMenuItemClickListener(this);
		popup.show();
	}

	@Override
	public boolean onMenuItemClick(MenuItem item) {
		switch (item.getItemId()) {
		case R.id.copy:
			Toast.makeText(this, "複製", Toast.LENGTH_LONG).show();
			break;
		case R.id.del:
			Toast.makeText(this, "刪除", Toast.LENGTH_LONG).show();
			break;
		default:
			break;
		}
		return false;
	}
	
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章