zoukankan      html  css  js  c++  java
  • Android -- Options Menu,Context Menu,Popup Menu

    Options Menu                                                                          

    创建选项菜单的步骤:

    1、覆盖Activity 的onCreateOptionMenu(Menu menu)方法,当菜单第一次被打开时调用

    2、调用Menu 的add( )方法添加菜单项(MenuItem),同时可以调用MenuItem 的setIcon( )方法来为菜单项设置图标

    3、当菜单项(MenuItem)被选择时,覆盖Activity 的onOptionsItemSelected(MenuItem item)来响应事件

    public class MainActivity extends Activity {
    
        // 定义一些变量,后面直接拿来用
        private static final int START_ITEM = Menu.FIRST;
        private static final int OVER_ITEM = Menu.FIRST + 1;
        private static final int SET_ITEM1 = Menu.FIRST + 2;
        private static final int SET_ITEM2 = Menu.FIRST + 3;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // 添加菜单项(组ID,菜单项ID,排序,标题)
            menu.add(0, START_ITEM, 100, "开始");
            menu.add(0, OVER_ITEM, 200, "结束");
            // 添加子菜单
            SubMenu sub1 = menu.addSubMenu("设置");
            sub1.add(1, SET_ITEM1, 300, "设置声音");
            sub1.add(1, SET_ITEM2, 400, "设置桌面");
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
    
            switch (item.getItemId()) {
            case START_ITEM:
                // 提示信息
                Toast.makeText(this, "开始", Toast.LENGTH_SHORT).show();
                break;
            case OVER_ITEM:
                // 提示信息
                Toast.makeText(this, "结束", Toast.LENGTH_SHORT).show();
                break;
            case SET_ITEM1:
                // 提示信息
                Toast.makeText(this, "声音设置", Toast.LENGTH_SHORT).show();
                break;
            case SET_ITEM2:
                // 提示信息
                Toast.makeText(this, "设置桌面", Toast.LENGTH_SHORT).show();
                break;
            default:
                break;
            }
            return super.onOptionsItemSelected(item);
        }
    
    }

    Context Menu                                                                        

    顾名思义,与上下文(环境)有关。思想类似于Windows中的右键单击弹出的快捷菜单。操作时需要长时间按住某个东东不放。

    创建上下文菜单的步骤:

    1、覆盖Activity 的onCreateContextMenu(Menu menu)方法,调用Menu的add()方法添加菜单项(MenuItem)。

    2、覆盖Activity 的onContextItemSelected(MenuItem iitem)来响应事件。

    3、调用registerForContextMenu( )方法来为视图注册上下文菜单。

    public class MainActivity2 extends Activity {
    
        private Button btn1;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main2);
            // 获取BUTTON对象
            btn1 = (Button) findViewById(R.id.button1);
            //在button上注册上下文菜单
            registerForContextMenu(btn1);
        }
    
        // 创建上下文菜单的事件方法
        @Override
        public void onCreateContextMenu(ContextMenu menu, View v,
                ContextMenuInfo menuInfo) {
            super.onCreateContextMenu(menu, v, menuInfo);
    
            getMenuInflater().inflate(R.menu.menu_main2, menu);
    
        }
    
        // 上下文菜单项触发事件
        @Override
        public boolean onContextItemSelected(MenuItem item) {
            switch (item.getItemId()) {
            case R.id.start:
                Toast.makeText(this, "开始。。。", Toast.LENGTH_SHORT).show();
                break;
            case R.id.over:
                Toast.makeText(this, "结束。。。", Toast.LENGTH_SHORT).show();
                break;
            default:
                break;
            }
            return super.onContextItemSelected(item);
        }
    
    }

    Popup Menu                                                                             

    弹出式菜单.

    弹出菜单是停靠在一个View上的一个模式菜单。如果View对象下方有空间,那么弹出菜单将显示在停靠对象的下方,否则会显示在上方。这是非常有用的。

    public class MainActivity3 extends Activity  implements OnMenuItemClickListener{
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main3);
        }
    
        public void showPopupMenu(View v){
            //创建弹出式菜单对象(最低版本11)
            PopupMenu popup = new PopupMenu(this,v);
            //获取菜单填充器
            MenuInflater inflater = popup.getMenuInflater();
            //填充菜单
            inflater.inflate(R.menu.menu_main3, popup.getMenu());
            //设置菜单项的单击事件
            popup.setOnMenuItemClickListener(this);
    
            popup.show();
        }
    
        //弹出式菜单的单击事件处理
        @Override
        public boolean onMenuItemClick(MenuItem item) {
    
            switch (item.getItemId()) {
            case R.id.copy:
                Toast.makeText(this, "复制。。。", Toast.LENGTH_LONG).show();
                break;
            case R.id.del:
                Toast.makeText(this, "删除。。。", Toast.LENGTH_LONG).show();
                break;
    
            default:
                break;
            }
            return false;
        }
    
    }

    我是天王盖地虎的分割线                                                               

    321

    源代码:http://pan.baidu.com/s/1dD1Qx01

    menu学习.zip

    转载请注明出处:http://www.cnblogs.com/yydcdut

  • 相关阅读:
    科技部:中国131家独角兽企业 名单文字版
    Application_Start事件中用Timer做一个循环任务
    HttpRuntime.Cache再学习
    USB 3.0规范中译本 第10章 集线器,主机下行口以及设备上行口规范
    Vue.js 入门教程
    用python爬了自己的微信,原来好友都是这样的!
    小白到大神,Python 密集知识点汇总
    如何处理JS,css与smarty标签的冲突
    全新 Kali Linux 系统安装指南
    xshell连接centos与ubuntu
  • 原文地址:https://www.cnblogs.com/yydcdut/p/3828819.html
Copyright © 2011-2022 走看看