Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 菜單簡析01(OptionsMenu)

Android 菜單簡析01(OptionsMenu)

編輯:關於Android編程

Android 的菜單機制,在 Android 3.0 之前和之後有很大的去別,Android 3.0 推出 ActionBar ,導航的 UI 交互有很大的變化,但菜單的邏輯和接口還是一樣的。這裡主要介紹下 Android 菜單創建、使用,後面介紹 ActionBar,SherlockActionBar 與 菜單的結合使用,自定義菜單的創建。

Android 菜單主要有4種:

OptionMenu

ContextMenu

PopMenu

SubMenu

下面先介紹下 OptionMenu ,分別使用 xml 文件和 JAVA 代碼創建 菜單。

1.OptionMenu

選項菜單,點擊 Menu 鍵時彈出,選中菜單項或者點擊其他區域,菜單消失。

optionMenu 的相關方法的實現在 Activity 中 ,相關的方法有:

 

 

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    Log.d(tag, onCreateOptionsMenu);
    return super.onCreateOptionsMenu(menu);

}

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    Log.d(tag, onPrepareOptionsMenu);

    return super.onPrepareOptionsMenu(menu);
}

@Override
public void onOptionsMenuClosed(Menu menu) {

    System.out.println(onOptionsMenuClosed);
    Log.d(tag, onOptionsMenuClosed);

    super.onOptionsMenuClosed(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.action_save:
        Log.d(tag, action_save);
        break;

    case R.id.action_settings:
        Log.d(tag, action_settings);
        break;
    case R.id.action_delete:
        Log.d(tag, action_delete);
        break;
    case R.id.action_edit:
        Log.d(tag, action_edit);
        break;

    }

    return super.onOptionsItemSelected(item);
}

 

onCreateOptionMenu ,在 Activity 生命周期內 只執行一次,onPrepareOptionMenu每次打開菜單都會執行,菜單消失的時候執行onOptionsMenuClosed方法,菜單被選中時執行 onOptionsItemSelected 。

下面看下在 Android 2.3 系統上用 XML 創建的 OptionMenu ,具體效果圖如下。

\

 

 

第一張:4個菜單選項,沒有圖標

第二張:8個菜單項,有圖標

第三張:點擊更多,沒有圖標

同樣的代碼,如果 不兼容(最低版本>11) Android 3.0 之前的版本,在 Android4.4 上是什麼效果呢 ?


 

\

 

 

第一張:4個菜單選項,沒有圖標 ,只顯示出兩個,多了一個更多的標識

第二張:點擊更多菜單項

第三張:8個菜單項,有圖標,但是顯示出的菜單沒有文字,更多中菜單項只有文字

第四張:點擊更多,沒有圖標

下面看下具體的代碼

1. 編寫 menu.xml


 

 



	       

 

android:orderInCategory 菜單項在 菜單中的位置

 

2. 在 Activity 中添加 菜單


 

 

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    MenuInflater inflater = getMenuInflater();
    Log.d(tag, onCreateOptionsMenu);
    inflater.inflate(R.menu.main_icon, menu);
    return super.onCreateOptionsMenu(menu);

}

 

 

3. 菜單事件的響應


 

    @Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
    case R.id.action_save:
        Log.d(tag, action_save);
        break;

    case R.id.action_settings:
        Log.d(tag, action_settings);
        break;
    case R.id.action_delete:
        Log.d(tag, action_delete);
        break;
    case R.id.action_edit:
        Log.d(tag, action_edit);
        break;

    case R.id.action_search:
        Log.d(tag, action_search);
        break;

    }

    return super.onOptionsItemSelected(item);
}

 

這樣,就完成了菜單的創建、使用、響應。

Android 官方推薦使用 XML 創建菜單,同時也可以在 JAVA 代碼中創建 菜單。實現過程如下

a. 直接在 onCreateOptionsMenu() 方法中添加菜單項


 

  @Override
public boolean onCreateOptionsMenu(Menu menu) {

    MenuInflater inflater = getMenuInflater();
    //menu.add(int groupid,int itemid,int orderid,String title)方法參數
    //add 方法返回一個 MenuItem 對象,可以添加圖標,調用 setIcon() 方法
    Log.d(tag, onCreateOptionsMenu);
    menu.add(0, Menu.FIRST+1, Menu.FIRST+1, menusStrings[0]).setIcon(android.R.drawable.ic_menu_add);
    menu.add(0, Menu.FIRST+2, Menu.FIRST+2, menusStrings[1]).setIcon(android.R.drawable.ic_menu_agenda);
    menu.add(0, Menu.FIRST+3, Menu.FIRST+3, menusStrings[2]).setIcon(android.R.drawable.ic_menu_call);
    menu.add(0, Menu.FIRST+4, Menu.FIRST+4, menusStrings[3]).setIcon(android.R.drawable.ic_menu_close_clear_cancel);
    menu.add(0, Menu.FIRST+5, Menu.FIRST+5, menusStrings[4]).setIcon(android.R.drawable.ic_menu_crop);
    menu.add(0, Menu.FIRST+6, Menu.FIRST+6, menusStrings[5]).setIcon(android.R.drawable.ic_menu_upload);
    inflater.inflate(R.menu.main, menu);
    return super.onCreateOptionsMenu(menu);

}

 

b. 響應菜單選中事件

響應選中事件方式和上面一樣,就不再貼出代碼了~。

 

關於 OptionsMenu的 介紹就這些啦,大家有問題在評論交流啊

 

 

 

 

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved