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

  • 相关阅读:
    网站安全编程 黑客入侵 脚本黑客 高级语法入侵 C/C++ C# PHP JSP 编程
    【算法导论】贪心算法,递归算法,动态规划算法总结
    cocoa2dx tiled map添加tile翻转功能
    8月30日上海ORACLE大会演讲PPT下载
    【算法导论】双调欧几里得旅行商问题
    Codeforces Round #501 (Div. 3) B. Obtaining the String (思维,字符串)
    Codeforces Round #498 (Div. 3) D. Two Strings Swaps (思维)
    Educational Codeforces Round 89 (Rated for Div. 2) B. Shuffle (数学,区间)
    洛谷 P1379 八数码难题 (BFS)
    Educational Codeforces Round 89 (Rated for Div. 2) A. Shovels and Swords (贪心)
  • 原文地址:https://www.cnblogs.com/yydcdut/p/3828819.html
Copyright © 2011-2022 走看看