Android中MenuInflater實例

我們知道,LayoutInflater是用來實例化整個佈局文件,而 MenuInflater是用來實例化Menu目錄下的Menu佈局文件的。

傳統意義上的菜單定義需要Override Activity的onCreateOptionsMenu,然後在裏面調用Menu.add把Menu的一個個item加進來,比較複雜。而通過使用MenuInflater可以把Menu的構造直接放在Menu佈局文件中,真正實現模型(Model)與視圖(View)的分離,程序也看着清爽多了。

下面一個實例是定義四個菜單,並且實現了一個菜單事件, 當我們點擊設置(Settind) 菜單,進入手機設置狀態。

效果圖如下:


源代碼如下:

/TestMenuInflater/res/menu/options_menu.xml:

TestMenuInflater.java:

幾點說明:

  1. 與LayoutInflater相比,MenuInflater的用法簡單多了。首先,MenuInflater獲取方法只有一種:Activity.getMenuInflater();其次,MenuInflater.inflater(int menuRes,Menu menu)(這裏不代表inflater就是static方法,可以這樣調用,只是爲了描述方便)的返回值是void型,這就決定了MenuInflater.inflater後就沒有後續操作了。這說明通過這種方式把Menu佈局文件寫好後就不能在程序中動態修改了,而不像LayoutInflater.inflater那樣,返回值是View型,可以進行後續的進一步操作。另外,MenuInflater只有一個void inflater(int menuRes,Menu menu)非構造方法。
  2. Menu佈局文件中的icon資源是Android自帶的,通過“@android:drawable/"獲取到。
  3. 另外,Android也有類似的功能。具體參考源碼:/packages/apps/Launcher/src/com/android/launcher/Launcher.java
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章