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/p/3828819.html,如需转载请自行联系原作者

相关文章
|
4月前
|
XML Java Android开发
34. 【Android教程】菜单:Menu
34. 【Android教程】菜单:Menu
66 2
|
5月前
|
XML Java Android开发
Android控件之基础控件——进度条类的view——TextView、Checkbox复选控件、RadioButton单选控件、ToggleButton开关、SeekBar拖动条、menu、弹窗
Android控件之基础控件——进度条类的view——TextView、Checkbox复选控件、RadioButton单选控件、ToggleButton开关、SeekBar拖动条、menu、弹窗
504 1
|
Android开发
Android 中选项菜单(Option menu)的用法
Android 中选项菜单(Option menu)的用法
158 0
|
Android开发
Android 中实现上下文菜单(Context menu)详解
Android 中实现上下文菜单(Context menu)详解
89 0
|
XML Android开发 数据格式
Android 底部导航栏(一、BottomNavigationView+Menu+Fragment)
现在常用的App主页都会有一个底部导航栏,根据需求也使用过好几种方法进行实现,于是想着还是总结一下,今天还写一个简单的BottomNavigationView方法来实现这个功能
|
XML Java 数据格式
Android_三种常用Menu菜单(附源码)
记录一下我写菜单的代码,我写了一共有三种菜单,从常用到不常用。
185 0
|
Android开发 容器
Android动态修改ToolBar的Menu菜单
Android动态修改ToolBar的Menu菜单 效果图 实现 实现很简单,就是一个具有3个Action的Menu,在我们滑动到不同状态的时候,把对应的Action隐藏了。
1775 0
|
XML 数据可视化 API
安卓 topic-菜单 Menu
http://developer.android.youdaxue.com/guide/topics/ui/menus.html 菜单是许多应用类型中常见的用户界面组件。要提供熟悉而一致的用户体验,您应使用 Menu API 呈现 Activity 中的用户操作和其他选项。 从 Android 3.0(API 级别 11)开始,采用 Android 技术的设备不必再提供一个专用“菜单”按钮。随着这种改变,Android 应用需摆脱对包含 6 个项目的传统菜单面板的依赖,取而代之的是要提供一个应用栏来呈现常见的用户操作。 尽管某些菜单项的设计和用户体验已发生改变,但定义一系列操作和选项所使用的语
130 0
安卓 topic-菜单 Menu
|
Android开发
【Android 内存优化】Bitmap 图像尺寸缩小 ( 设置 Options 参数 | inJustDecodeBounds | inSampleSize | 工具类实现 )
【Android 内存优化】Bitmap 图像尺寸缩小 ( 设置 Options 参数 | inJustDecodeBounds | inSampleSize | 工具类实现 )
452 0
下一篇
无影云桌面