Android之Memu

Menu:一个管理菜单项的接口
Menus:“活动”中一重要的用户界面组成部分,它让开发者可以以自己熟习的方式去处理事件,应用Android框架,
我们可以轻松的在自己的应用程序中增加标准的菜单。
菜单分为三类:
Options Menu:三类菜单中最重要的,当用户点出“Menu"按钮时显示。面在3。0以后的版本中,也可以通用“Anction Bar”来显示。
Context Menu:类似于PC机中点击”右键“所弹出的菜单项,它一般注册在列表示图中。
Submenu:当点击菜单项时显示出的子菜单项。
(注:三类菜单其实都是MenuItem的集合)
Options Menu 的创建及应用
一、创建菜单集合项,可以通过两种方式
A:XML文件格式,在 res/menu/下新建一个menu资源文件
如:game_file.xml
< menu  xmlns:android ="http://schemas.android.com/apk/res/android"   >
             < group  android:id ="@+id/group1"  android:menuCategory ="container"  android:enabled ="true"  android:checkableBehavior ="none"  android:orderInCategory ="0"  android:visible ="true" >
             < item  android:id ="@+id/item1"  android:title ="first-item"  android:menuCategory ="container"  android:checked ="true"  android:visible ="true" ></ item >
             < item  android:id ="@+id/item2"  android:title ="second-item"  android:menuCategory ="container"  android:checked ="false"  android:visible ="true" ></ item >
             < item  android:id ="@+id/item3"  android:title ="third-item"  android:menuCategory ="container"  android:checked ="false"  android:visible ="true" ></ item >
             </ group >
         </ menu >
而在源代码中:
@Override
         public  boolean onCreateOptionsMenu(Menu menu) 
        {              
            MenuInflater inflater = getMenuInflater();
             // 将资源文件“转换”成菜单对象
            inflater.inflate(R.menu.game_file, menu);
             return  super.onCreateOptionsMenu(menu);
        }
B:在JAVA创建的时候增加:
final   private   int  menuMode =Menu.FIRST; 
         final  private  int menuExit =Menu.FIRST + 1;
             final  private  int menuFile=Menu.FIRST+2;

        @Override
         public  boolean onCreateOptionsMenu(Menu menu) 
        {
            menu.add(0, menuMode, Menu.NONE, "Map Mode");
            menu.add(0, menuExit, Menu.NONE, "Back");
            menu.add(0,menuFile,Menu.NONE,"File Open");
             return  super.onCreateOptionsMenu(menu);
        }
说明:public boolean onCreateOptionsMenu(Menu menu) 
当用户第一次打开应用程序时,将调用onCreateOptionsMenu进行菜单的创建。创建菜单当然是用于与用户交互的,所以呢。。。且有下一步:
二、当用户选择一个菜单项进行交互时,重写“onOptionsItemClick(MenuItem Item)”方法进行功能自定义:

   @Override

     public  boolean onOptionsItemSelected(MenuItem item)
    {
         int fId=item.getItemId(); // 得到唯一ID
         switch(fId)
        {
             case menuMode:
            {
                Toast.makeText(getApplicationContext(),"MapMode",Toast.LENGTH_LONG)
                    .show();
                 break;
            }
             case menuExit:
            { 
                Toast.makeText(getApplicationContext(),"Back",Toast.LENGTH_LONG)
                .show();
                 break;
            }
             case menuFile:
            {
                Toast.makeText(getApplicationContext(), "Open File",Toast.LENGTH_SHORT)
                    .show();
                 break;
            }
             case R.id.item2:
            {
                String tempTitle=(String) item.getTitle();

                Toast.makeText(getApplicationContext(), tempTitle,Toast.LENGTH_SHORT)
                    .show();
                 break;
            }
             default:
            {
                Toast.makeText(getApplicationContext(),"NONE",Toast.LENGTH_LONG)
                .show();
                 break;
            }
        }
         return  super.onOptionsItemSelected(item);
    }

三、扩展,3.0后,Android都是在用户第一次使用应用程序的时候就创建菜单,而不像以前是在用户第一次使用菜单时创建,有时,根据实际需要,在某些

情况下动态增加菜单: onPrepareOptionsMenu()
如:
@Override
     public  boolean onPrepareOptionsMenu (Menu menu)
    {
        menu.add(0,menuMode,Menu.NONE,"MenuMode");
         return  super.onPrepareOptionsMenu(menu);
    }
要注意的是。在每次用户打开菜单时,都将执行onPrepareOptionsMenu,所以,在动态增加的时候得判断是否已添加。

 

 参考资源:http://developer.android.com/guide/topics/ui/menus.html

 

 

转载于:https://www.cnblogs.com/runner/archive/2011/12/03/bora_android_OptionsMenu.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值