編輯:關於Android編程
本章內容
第1節菜單概述 第2節選項菜單和子菜單 第3節上下文菜單 第4節使用XML定義菜單 第5節 ActionBar的作用 本章目標 了解各版本菜單的特征。 掌握創建選項菜單的方法。 掌握菜單事件的處理方法。 掌握動態改變菜單的方法。 掌握創建上下文菜單的方法。 熟悉擴展上下文菜單的方法。 了解ActionBar的作用。 Android系統中的菜單 u菜單通常有兩種情況:選項菜單和上下文菜單 ?與Activity相關的叫選項菜單,在顯示Activity時按MENU鍵彈出 ?與具體視圖相關的菜單叫上下文菜單,長按視圖將彈出 選項菜單是個當前Activity關聯的菜單 u對於Android2.3.x及以前的版本 ?通過設備的“菜單”按鈕彈出 ?出現在屏幕底部 u對於Android3.x及以後的版本 ?出現在ActionBar的右端 ?點擊ActionBar的右端或設備上的“菜單”按鈕彈出 ?菜單項可以出現在ActionBar上 u可以在Activity的子類和Fragment的子類中定義選項菜單 ?如果兩者都定義了,那麼在顯示的時候將會合並兩者的菜單 ?合並顯示時先顯示Activity的菜單 添加菜單或子菜單的步驟如下: ?重寫Activiiy的OnCreateOptionsMenu(Menu menu)的方法,在該方法裡調用Menu對象的方法來添加菜單項或子菜單。 ?如果希望應用程序能響應菜單項的單擊事件,重寫Activity的onOptionsItemSelected (MenuItem mi)方法即可。
public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); this.menu = menu; return true; }u通過按鈕事件或者其他事件實現添加菜單的任務
?Menu類中提供了add方法可以用途添加菜單 ?Menu類中提供了removeItem方法用於刪除菜單
menu.add(groupId, itemId, order, titleRes);
添加普通菜單項並綁定事件
public boolean onCreateOptionsMenu(Menu menu) { //添加普通菜單項 menu.add(0, Menu.FIRST, 1, "添加"); menu.add(0,Menu.FIRST+1,2,"編輯"); menu.add(0,Menu.FIRST+2,3,"保存"); return true; } public boolean onOptionsItemSelected(MenuItem item) { //判斷單擊的是哪個菜單項,並作出響應 switch(item.getItemId()){ case Menu.FIRST: break; //…… } return super.onOptionsItemSelected(item); }
添加子菜單
public boolean onCreateOptionsMenu(Menu menu) { SubMenu colorMenu = menu.addSubMenu("字體顏色"); colorMenu.setIcon(R.drawable.color); // 設置菜單頭的圖標 colorMenu.setHeaderIcon(R.drawable.color); // 設置菜單頭的標題 colorMenu.setHeaderTitle("選擇文字顏色"); colorMenu.add(0, FONT_RED, 0, "紅色"); colorMenu.add(0, FONT_GREEN, 0, "綠色"); colorMenu.add(0, FONT_BLUE, 0, "藍色"); return super.onCreateOptionsMenu(menu); }
初始化選項菜單項事件
u當用於選擇一個菜單項時,onOptionsItemSelected()方法會執行 ?參數為MenuItem的對象 ?通過調用MenuItem的getItemId()方法可以獲得菜單項的ID ?以選中的菜單項ID為標准判斷和處理事件創建上下文菜單 創建上下文菜單的步驟如下 u重寫Activity 的onCreateContextMenu menu, View source, ContextMenu Context.MenuInfo menulnfo)方法。 u調用Activity的registerForContextMenu(View view)方法為view組件注冊上下文菜單。 u如果希望應用程序能為菜單項提供響應,可以重寫OnContextItemSelected(MenuItem item)方法,或為指定菜單項綁定事件監聽器。 添加上下文菜單並綁定事件
public void onCreateContextMenu(ContextMenu menu, View source, ContextMenu.ContextMenuInfo menuInfo) { menu.add(0, MENU1, 0, "紅色"); } public boolean onContextItemSelected(MenuItem mi) { switch (mi.getItemId()) { …… } return true; }為view組件注冊上下文菜單 txt = (TextView) findViewById(R.id.txt); // 為文本框注冊上下文菜單 registerForContextMenu(txt);
u使用
標簽定義菜單
u使用public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; }
控制菜單項的顯示 u在布局菜單的時候可以通過屬性確定菜單項是否顯示 ?很多情況下,我們需要在特殊情況下才顯示菜單項 ?初始時往往選擇將菜單項隱藏 l只需要給item添加android:visible屬性,l取值為false 選項菜單支持子菜單 u子菜單的定義只要在布局中的item標簽內嵌入menu就可以實現
創建上下文菜單
單選框菜單 構建單選框菜單 u在菜單布局中有一個標簽叫
構建單選框菜單 u單選框布局示例
復選框菜單 構建復選框菜單 u使用group標簽實現復選框菜單 ?為menu標簽添加子標簽group ?設置group的屬性android:checkableBehavior=“all” ?在group標簽中添加item標簽定義單選菜單項 l在一些低的版本中,單選菜單項不能設置icon u也可以直接為單個菜單項設置復選框 ?設置item的屬性android:checkable=“true” ?
構建復選框菜單 u復選框布局示例
ActionBar可以帶給用戶明確的動作提示和全局導航 u在需要在界面上明確提示用戶動作的情況下 u在需要進行全局導航的情況下 u統一顯示界面重要功能 ?比如:搜索、新建、分享等功能出現在顯著位置便於使用
在系統應用中,很多都采用了ActionBar u比如編寫新短信功能
TextInput TextInput是允許用戶輸入文本的基礎組件。 他有一些屬性可以來幫助我們處理業務邏輯諸如onChangeText onSubmitEditing
一、Android中的事件處理方法事件處理:響應用戶UI動作,提高應用程序交互性1、基於監聽的事件處理機制2、基於回調的事件處理機制3、Handler消息處理
本系列文章提供簡單Android應用開發實例方法,文章步驟如下所示:1 獲取應用所需的數據源數據源一般來源於互聯網、個人搜集或者其他方式2 應用UI設計每個應用軟件都需要
一、JNI到底是干嘛用的百度都能查到的官方解釋我就不多說了。我自己的理解是兩方面,一方面主要用於各種復雜算法的執行,C的效率高自不必說,更重要的是so的破解難度要遠遠大於