• 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

  • 相关阅读:
    【漏洞分析】dedecms有前提前台任意用户密码修改
    关于t00ls的挂机脚本
    关于pocsuite的使用
    [代码审计]青云客Cms前台有条件注入至getshell,后台xss至getshell、至弹你一脸计算器
    警惕phpstudy等开发神器使用默认配置可能带来的危险
    [代码审计]DM企业建站系统v201710 sql注入漏洞分析 | 新版v201712依旧存在sql注入
    [代码审计]XiaoCms(后台任意文件上传至getshell,任意目录删除,会话固定漏洞)
    对长短按设置不同反应 安卓
    如何数冲突域(collision domains)个数
    Computer Network Homework2’s hard question
  • 原文地址:https://www.cnblogs.com/runner/p/bora_android_OptionsMenu.html
Copyright © 2020-2023  润新知