編輯:Android開發實例
通過Android提供的NotePad示例應用,及幫助文檔中對菜單的相關描述,現將如何在我們的Androiod應用中定制我們自己的菜單,做一個小結。
一、菜單的生成
對一個Android應用中的每一個屏幕,也就是說,對每一個Activity類,都會擁有一個默認菜單。在Activity類中,定義了幾個與菜單有關的方法,供繼承於Activity類的子類去重載,從而定制我們自己的菜單。這幾個方法為:
public boolean onCreateOptionsMenu(android.view.Menu menu);
public boolean onPrepareOptionsMenu(android.view.Menu menu);
public boolean onOptionsItemSelected(android.view.MenuItem item);
為了生成我們自己的菜單,Android為我們提供了兩個時機點。當在Activity類實例啟動時,我們可以通過重載onCreateOptionsMenu()來定制我們的菜單;另外,也可以在菜單每次被調用時,對菜單中的項重新生成,通過重載onPrepareOptionsMenu來實現。對於第二種方式,由於每次調用時都要重新生成,對於那些不經常變化的菜單,效率就會比較低。看下面的代碼:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(0, 0, “菜單項一”);
menu.add(0, 1, “菜單項二”);
menu.add(0, 2, “菜單項三”);
return true;
}
Menu.add()方法第一個參數表示給這個新增的菜單項分配一個分組號;第二個參數表示給這個新增的菜單項分配一個唯一標識id;第三個參數為菜單項的標題。
我們可以通過調用Menu.setItemShown()或者Menu.setGroupShown()方法來顯示或隱藏一些菜單項。
這裡要注意的一個地方是:菜單項的顯示順序是按代碼中添加的順序來的,也就是說Menu.add()方法只能在菜單的最後面新增一個菜單項。另外,第一個參數的分組標識,不會改變菜單項的顯示順序。
二、響應菜單項點擊
當菜單顯示出來後,用戶點擊菜單中的某一菜單項,我們的菜單需要響應這個點擊事件。這個也很簡單,通過重載onOptionsItemSelected()方法來實現,直接上例子:
@Override
public boolean onOptionsItemSelected(Menu.Item item){
switch (item.getId()) {
case 0:
showAlert(”Menu Item Clicked”, “菜單項一”, “ok”, null, false, null);
return true;
case 1:
showAlert(”Menu Item Clicked”, “菜單項二”, “ok”, null, false, null);
return true;
case 2:
showAlert(”Menu Item Clicked”, “菜單項三”, “ok”, null, false, null);
return true;
}
return false;
}
這裡,我們還可以通過調用Item.setAlphabeticShortcut()或Item.setNumericShortcut()方法來增加菜單項的快捷鍵操作。
對響應菜單項點擊,還有另一個辦法,可以通過實現Runnable類()的一個子類,做為消息句柄來對菜單項點擊做響應,但這種辦法效率較低,不推薦這麼做。
三、增加子菜單
我們還可以通過調用Menu.addSubMenu()方法,為某個菜單項添加子菜單,這個方法返回一個SubMenu實例,我們可以在這個SubMenu菜單中添加子菜單項。
注:菜單只能有一級子菜單,不支持多級。
對於從事Android開發的人來說,遇到ANR(Application Not Responding)是比較常見的問題。一般情況下,如果有ANR發生,系統都會在/
Android通用流行框架大全 1. 緩存 DiskLruCacheJava實現基於LRU的磁盤緩存 2.圖片加載 Android Univer
可以顯示在的Android任務,通過加載進度條的進展。進度條有兩種形狀。加載欄和加載微調(spinner)。在本章中,我們將討論微調(spinner)。Spinner 用
Android應用程序可以在許多不同地區的許多設備上運行。為了使應用程序更具交互性,應用程序應該處理以適合應用程序將要使用的語言環境方面的文字,數字,文件等。在本章中,我