Android -- Options Menu,Context Menu,Popup Menu

weixin_34054866發表於2014-07-09

Options Menu                                                                          

建立選項選單的步驟:

1、覆蓋Activity 的onCreateOptionMenu(Menu menu)方法,當選單第一次被開啟時呼叫

2、呼叫Menu 的add( )方法新增選單項(MenuItem),同時可以呼叫MenuItem 的setIcon( )方法來為選單項設定圖示

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

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);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu 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, 400, "設定桌面");
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()) {
        case START_ITEM:
            // 提示資訊
            Toast.makeText(this, "開始", Toast.LENGTH_SHORT).show();
            break;
        case OVER_ITEM:
            // 提示資訊
            Toast.makeText(this, "結束", Toast.LENGTH_SHORT).show();
            break;
        case SET_ITEM1:
            // 提示資訊
            Toast.makeText(this, "聲音設定", Toast.LENGTH_SHORT).show();
            break;
        case SET_ITEM2:
            // 提示資訊
            Toast.makeText(this, "設定桌面", Toast.LENGTH_SHORT).show();
            break;
        default:
            break;
        }
        return super.onOptionsItemSelected(item);
    }

}

Context Menu                                                                        

顧名思義,與上下文(環境)有關。思想類似於Windows中的右鍵單擊彈出的快捷選單。操作時需要長時間按住某個東東不放。

建立上下文選單的步驟:

1、覆蓋Activity 的onCreateContextMenu(Menu menu)方法,呼叫Menu的add()方法新增選單項(MenuItem)。

2、覆蓋Activity 的onContextItemSelected(MenuItem iitem)來響應事件。

3、呼叫registerForContextMenu( )方法來為檢視註冊上下文選單。

public class MainActivity2 extends Activity {

    private Button btn1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        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) {
        super.onCreateContextMenu(menu, v, menuInfo);

        getMenuInflater().inflate(R.menu.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);
    }

}

Popup Menu                                                                             

彈出式選單.

彈出選單是停靠在一個View上的一個模式選單。如果View物件下方有空間,那麼彈出選單將顯示在停靠物件的下方,否則會顯示在上方。這是非常有用的。

public class MainActivity3 extends Activity  implements OnMenuItemClickListener{

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

    public void showPopupMenu(View v){
        //建立彈出式選單物件(最低版本11)
        PopupMenu popup = new PopupMenu(this,v);
        //獲取選單填充器
        MenuInflater inflater = popup.getMenuInflater();
        //填充選單
        inflater.inflate(R.menu.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;
    }

}

我是天王蓋地虎的分割線                                                               

321

原始碼:http://pan.baidu.com/s/1dD1Qx01

menu學習.zip

 

 

 

轉載請註明出處:http://www.cnblogs.com/yydcdut

相關文章