前言
今天看了pro android 3中menu這一章,對Android的整個menu體系有了進一步的瞭解,故整理下筆記與大家分享。
PS:強烈推薦《Pro Android 3》,是我至今為止看到的最好的一本android書,中文版出到《精通Android 2》。
理解Android的菜單
菜單是許多應用程式不可或缺的一部分,Android中更是如此,所有搭載Android系統的手機甚至都要有一個"Menu"鍵,由此可見菜單在Android程式中的特殊性。Android SDK提供的菜單有如下幾種:
- 選項菜單:最常規的菜單,android中把它叫做option menu
- 子功能表:android中點擊子功能表將彈出懸浮視窗顯示子功能表項。子功能表不支援嵌套,即子功能表中不能再包括其他子功能表。
- 操作功能表:android中長按視圖控制項後出現的菜單,windows點擊右鍵彈出的菜單即操作功能表
- 表徵圖菜單:這個比較簡單,就是帶icon的功能表項目,需要注意的是子功能表項、操作功能表項目、擴充功能表項目均無法顯示表徵圖。
- 選擇菜單(alternative menu):用的比較少,以後單獨介紹,本文先跳過(其實是我還沒弄明白啦o(≧v≦)o~~)
- 擴充菜單:選項菜單最多隻能顯示6個功能表項目,超過6個時,第6個功能表項目會被系統替換為一個叫“更多”的子功能表,原來顯示不下的功能表項目都作為[其他] 功能表的子功能表項。如:
第6個功能表項目自動變為“更多” 點擊“更多”顯示其他功能表項目
Android3.0又引入了一個叫action bar的東西,本文不做講解,大家自己google。
android.view.Menu介面代表一個菜單,android用它來管理各種功能表項目。注意我們一般不自己建立menu,因為每個Activity預設都內建了一個,我們要做的是為它加功能表項目和響應功能表項目的點擊事件。android.view.MenuItem代表每個功能表項目,android.view.SubMenu代表子功能表。其三者的關係可以用來表示
上面說過,每個activity包含一個菜單,一個菜單又能包含多個功能表項目和多個子功能表,子功能表其實也是菜單(因為它實現了Menu介面),因此子功能表也可以包含多個功能表項目。SubMenu繼承了Menu的addSubMenu()方法,但調用時會拋出執行階段錯誤。OnCreateOptionsMenu()和OnOptionsMenuSelected()是activity中提供了兩個回調方法,用於建立功能表項目和響應功能表項目的點擊。
下一篇《Android菜單詳解(二)——建立並響應菜單》將介紹如何使用代碼建立功能表項目,給功能表項目分組,及各種響應菜單事件的方法。