Android編程之菜單實現(xiàn)方法
本文實例講述了Android編程之菜單實現(xiàn)方法。分享給大家供大家參考,具體如下:
菜單是許多應(yīng)用程序不可或缺的一部分,Android中更是如此,所有搭載Android系統(tǒng)的手機都要有一個“menu”鍵,即菜單鍵,由此可見菜單在Android程序中的重要與特殊,其中Android的SDK提供了三種類型:分別為options menu(常規(guī)菜單),context menu(上下文菜單)和submenu(子菜單)。其中options menu是通過按Menu鍵來顯示,context menu通過在view(視圖控件上)按2秒之后才會顯示,這兩種菜單都可以嵌套子菜單,但是子菜單里不能嵌套子菜單。
Options menu只能在屏幕最下面顯示六個菜單選項,這六個菜單叫做icon menu(圖標菜單),圖標菜單不能有checkable選項,多于6項的會以more icon menu菜單來調(diào)出,叫做expanded menu(擴展菜單).options menu(選項菜單)通過activity 的onCreateOptionsMenu來生成,這個函數(shù)只會在Menu第一次生成時調(diào)用,任何想要改變options menu的只能通過onPrepareOptionsMenu來實現(xiàn),這個函數(shù)會在menu顯示之前被調(diào)用。onOptionsItemSeleted用來處理選中的options menu菜單項
Context Menu是跟某個具體的view捆綁在一起的,在activity中用registerForContextMenu來為某個view注冊上下文菜單。Context menu在顯示之前會調(diào)用onCreateContextMenu來生成menu,onContextItemSeleted用來處理選中的context menu 菜單。
Submenu是子菜單,可以嵌套在以上兩種菜單中,但是子菜單不能嵌套子菜單
Android還提供了對菜單項進行分組的功能,可以把相似功能的菜單分在一組里面,這樣就可以通過調(diào)用setGroupCheckable,setGroupEndable,setGroupVisible來設(shè)置屬性菜單,而不用單獨設(shè)置了。
1、下面是一個創(chuàng)建options menu 的例子:
首先在res里創(chuàng)建一個menu文件夾,里面可以創(chuàng)建許多menu的資源文件,方便管理。在這個文件夾里創(chuàng)建一個Android的xml文件,代碼如下:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/newFile" android:icon="@drawable/ic_launcher" android:title="@string/newFile_title"/> <item android:id="@+id/ecit" android:icon="@drawable/ic_launcher" android:title="@string/exit_title"/> </menu>
這里創(chuàng)建了兩個菜單選項,每個item是一個菜單選項,其中的icon也可以不寫;title里面的內(nèi)容要在string文件里提前寫上,這是菜單的標題;最后在Activity里面通過onCreateOptionsMenu方法創(chuàng)建這個菜單,然后通過onOptionsItemSelect方法來處理這個菜單。代碼如下:
package cn.csdn.android.menu; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.MenuItem.OnMenuItemClickListener; import android.widget.Toast; public class MenuTest1Activity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.options_menu, menu); return true; } }
運行結(jié)果如下圖所示:
在屏幕的下方可以看到這兩個菜單。
2、在Activity中添加方法可以響應(yīng)菜單的一些事件,通過上面的例子,在它的Activity中添加onOptionsItemSelected方法,可以是菜單完成它的功能,onOptionsItemSelected的代碼如下:
public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()){ case R.id.newFile: Toast.makeText(this,"new file",Toast.LENGTH_LONG).show(); break; case R.id.ecit: //Toast.makeText(this,"exit",Toast.LENGTH_LONG).show(); this.finish(); break; }
添加此方法后點擊“退出”按鈕可以退出,點擊“新建文件”出現(xiàn)名為“new file”的對話框。
也可以用onMenuItemClick方法處理:代碼如下
public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { case R.id.newFile: Toast.makeText(this, "new file", Toast.LENGTH_LONG).show(); break; case R.id.ecit: // Toast.makeText(this,"exit",Toast.LENGTH_LONG).show(); this.finish(); break; } return false;
功能和上一個方法一樣
3、創(chuàng)建子菜單,在xml文件中插入菜單,下面的例子是在第二個菜單里插入兩個菜單:xml文件源碼如下:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/menuitem1" android:title="menuitem1"/> <item android:id="@+id/menuitem2" android:title="menuitem2"> <menu > <item android:id="@+id/menuitem3" android:title="menuitem3"/> <item android:id="@+id/menuitem4" android:title="menuitem4"> </item> </menu> </item> </menu>
4、帶單選或復(fù)選的子菜單,在創(chuàng)建菜單時添加setGroupCheckable方法,來確定添加的是單選還是復(fù)選:
public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.second_menu, menu); SubMenu sm = menu.findItem(R.id.item3).getSubMenu(); sm.setIcon(R.drawable.ic_launcher); // sm.setGroupCheckable(0, true, true); sm.getItem(0).setCheckable(true); sm.getItem(0).setChecked(true); this.menu = menu; return super.onCreateOptionsMenu(menu); }
希望本文所述對大家Android程序設(shè)計有所幫助。
- Android動態(tài)添加menu菜單的簡單方法
- Android編程實現(xiàn)自定義系統(tǒng)菜單背景的方法
- Android仿微信頂/底部菜單欄效果
- Android實現(xiàn)類似于PC中的右鍵彈出菜單效果
- Android編程之菜單的實現(xiàn)方法實例詳解
- Android編程實現(xiàn)二級下拉菜單及快速搜索的方法
- Android開發(fā)之menu菜單
- Android實現(xiàn)模仿UCweb菜單效果的方法
- Android上下文菜單用法實例分析
- Android選項菜單用法實例分析
- Android仿微信菜單(Menu)(使用C#和Java分別實現(xiàn))
- Android編程實現(xiàn)為應(yīng)用添加菜單的方法
相關(guān)文章
Android使用Sensor感應(yīng)器獲取用戶移動方向(指南針原理)
這篇文章主要介紹了Android使用Sensor感應(yīng)器獲取用戶移動方向的方法,實例分析了指南針原理極其應(yīng)用,需要的朋友可以參考下2015-12-12android 解決ViewPager加載大量圖片內(nèi)存溢出問題
本篇文章是介紹 android 解決ViewPager加載大量圖片內(nèi)存溢出問題,并附有代碼實例,希望能幫到有需要的小伙伴2016-07-07Android Content Provider詳解及示例代碼
本文主要講解Android Content Provider,這里提供相關(guān)文檔資料,并附有實現(xiàn)代碼和實現(xiàn)效果圖,有需要的小伙伴可以參考下2016-08-08Android計時器的三種實現(xiàn)方式(Chronometer、Timer、handler)
這篇文章主要介紹了Android計時器的三種實現(xiàn)方式,Chronometer、Timer、handler計時器的實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-11-11在Android系統(tǒng)中使用gzip進行數(shù)據(jù)傳遞實例代碼
HTTP協(xié)議上的GZIP編碼是一種用來改進WEB應(yīng)用程序性能的技術(shù),4.4MB的文本數(shù)據(jù)經(jīng)過Gzip傳輸?shù)娇蛻舳酥笞優(yōu)?92KB,壓縮效率極高,下面與大家分享下具體的實現(xiàn)2013-06-06