• 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

  • 相关阅读:
    .NET + Jcrop 实现在线裁图功能
    jquery表格可编辑修改表格里面的值,点击td变input无刷新更新表格
    A、B、C、D和E类IP地址
    linux内核源码阅读之facebook硬盘加速flashcache之四
    Help-IntelliJIDEA-2019.3.4-插件:插件下载,安装,重启idea
    Help-IntelliJIDEA-2019.3.4-基础设置:14. intellij idea怎么调整菜单栏字体大小
    Help-IntelliJIDEA-2019.3.4-基础设置:13. 统一设置编码
    Help-IntelliJIDEA-2019.3.4-基础设置:12. Intellij IDEA的代码提示功能
    Help-IntelliJIDEA-2019.3.4-基础设置:11. idea 自动补全返回值,自动补全变量名称和属性名称
    Help-IntelliJIDEA-2019.3.4-基础设置:10.Maven自动下载源码包,告别反编译,直接上源码注释
  • 原文地址:https://www.cnblogs.com/yydcdut/p/3828819.html
Copyright © 2020-2023  润新知