zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    第3次实践作业
    第2次实践作业
    第1次实践作业
    2019 SDN大作业
    第05组 Beta版本演示
    个人作业——软件工程实践总结&个人技术博客
    个人作业——软件评测
    Springboot项目部署到云服务器(Ubuntu 18.04)
    结对第二次作业——某次疫情统计可视化的实现
    结对第一次—疫情统计可视化(原型设计)
  • 原文地址:https://www.cnblogs.com/runner/p/bora_android_OptionsMenu.html
Copyright © 2011-2022 走看看