网站首页 > Android

Android中的Menu功能菜单开发

  Android中的菜单是用户界面中最常见的元素,使用也很频繁,在Android中,菜单被分为3种,分别为选项菜单(OptionsMenu)、上下文菜单(ContextMenu)、子菜单(SubMenu)。本文先讲选项菜单(OptionsMenu)的使用。
Android手机上有个Menu按键,当Menu按下的时候,每个Activity都可以选择处理这一请求,在屏幕底部弹出一个菜单,这个菜单我们就叫做选项菜单(OptionsMenu),一般情况下,选项菜单最多能显示2排3个菜单选项。这些菜单项中可以设定图标,文字。菜单项如果多于6项,从第6项开始出现一个More选项,点击More才出现第六项以及以后的菜单项,这些菜单项也被称作Expanded Menus。

先浏览下效果图:

 
我们要在Activity中除了覆盖 onCreate(Bundle savedInstanceState);方法外,也要覆盖onCreateOptionsMenu(Menu menu)和onOptionsItemSelected(MenuItem item)方法。代码如下:
  1. package com.andy.test;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.Menu;  
  6. import android.view.MenuItem;  
  7. import android.widget.Toast;  
  8.   
  9. public class TestActivity extends Activity {  
  10.       
  11.     //定义Menu菜单选项的ItemId  
  12.     final static int ONE = Menu.FIRST;  
  13.     final static int TWO = Menu.FIRST+1;  
  14.     final static int THREE = Menu.FIRST+2;  
  15.     final static int FOUR = Menu.FIRST+3;  
  16.     final static int FIVE = Menu.FIRST+4;  
  17.     final static int SIX = Menu.FIRST+5;  
  18.     final static int SEVEN = Menu.FIRST+6;  
  19.       
  20.         public void onCreate(Bundle savedInstanceState) {  
  21.                super.onCreate(savedInstanceState);  
  22.                setContentView(R.layout.main);   
  23.         }  
  24.   
  25.     //创建Menu菜单  
  26.     public boolean onCreateOptionsMenu(Menu menu) {  
  27.         menu.add(0, ONE, 0, "第一").setIcon(R.drawable.icon);  //设置文字与图标  
  28.         menu.add(0, TWO, 0, "第二");  
  29.         menu.add(0, THREE, 0, "第三");  
  30.         menu.add(0, FOUR, 0, "第四");  
  31.         menu.add(0, FIVE, 0, "第五");  
  32.         menu.add(0, SIX, 0, "第六");  
  33.         menu.add(0, SEVEN, 0, "第七");  
  34.         return super.onCreateOptionsMenu(menu);  
  35.     }  
  36.   
  37.     //点击Menu菜单选项响应事件  
  38.     public boolean onOptionsItemSelected(MenuItem item) {  
  39.         switch(item.getItemId()){  
  40.         case 1:  
  41.             Toast.makeText(this, "你点击了第一", Toast.LENGTH_SHORT).show();  
  42.             break;  
  43.         case 2:  
  44.             Toast.makeText(this, "你点击了第二", Toast.LENGTH_SHORT).show();  
  45.             break;  
  46.         }  
  47.         return super.onOptionsItemSelected(item);  
  48.     }  
  49.   
  50.         //选项菜单被关闭事件,菜单被关闭有三种情形,menu按钮被再次点击、  
  51.     //back按钮被点击或者用户选择了某一个菜单项  
  52.     public void onOptionsMenuClosed(Menu menu) {  
  53.         Toast.makeText(this, "你关闭了选项菜单", Toast.LENGTH_SHORT).show();  
  54.     }  
  55.   
  56.     //菜单被显示之前的事件   
  57.     public boolean onPrepareOptionsMenu(Menu menu) {  
  58.         Toast.makeText(this,   
  59.                 "选项菜单显示之前onPrepareOptionsMenu方法会被调用",Toast.LENGTH_LONG).show();    
  60.                 //如果返回false,此方法就把用户点击menu的动作给消费了,  
  61.         //onCreateOptionsMenu方法将不会被调用    
  62.                   return true;    
  63.     }    
  64. }  
 
注:如果我们想通过另外一种方式来实现和点击Menu键一样的功能,例如:点击Menu键时会弹出和隐藏选项菜单,如果我想通过点击某一个Button按钮来实现同样的功能呢?即通过调用系统的 openOptionsMenu(); 

发表评论

验证码: 点击验证码
  • 手机软件开发
    专业手机软件开发|手机客户端开发
    j2me手机软件开发|Android开发
  • 手机游戏开发
    手机游戏开发|symbian游戏开发
    Android开发|j2me手机游戏开发
  • windows phone开发
    windows phone软件开发,windows phone游戏开发
  • Android开发
    Android手机软件开发,Android游戏开发,android 软件开发
  • symbian开发
    symbian手机软件开发,symbian游戏开发,塞班手机软件开发

信息化系统集成

定制解决方案

手机软件定制