`
zheyiw
  • 浏览: 1020407 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

OptionsMenu,ContextMenu,PopupMenu

 
阅读更多


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;
    }

}


分享到:
评论

相关推荐

    Android下菜单的使用

    首先,我们来看Android中的基本菜单类型——`OptionsMenu`,通常在屏幕顶部的三个点(汉堡菜单)中展开。创建一个`OptionsMenu`需要在`Activity`的`onCreateOptionsMenu()`方法中 inflate 一个XML布局文件,该文件...

    对话框和菜单

    在Android中,菜单分为选项菜单(OptionsMenu)和上下文菜单(ContextMenu)。选项菜单通常在屏幕顶部显示,当用户按下菜单键时出现;上下文菜单则在用户长按某对象时触发。"Day11_PopupMenu"和"Day11_ContextMenu01...

    android menu 开发

    本文将深入探讨四个关键类型的菜单:选项菜单(OptionsMenu)、上下文菜单(ContextMenu)、子菜单(SubMenu)以及弹出菜单(Popup Menu),并结合"NewMenuDemo"这个示例项目来阐述它们的设计与实现。 首先,我们来...

    android 三种菜单

    本文将详细讲解Android中的三种主要菜单类型:Options Menu(选项菜单)、Context Menu(上下文菜单)和PopupMenu(弹出式菜单),以及如何在实际项目中运用它们。 **Options Menu** Options Menu,也被称为主菜单...

    Android--详解安卓中的Menu.rar

    - 主要有三种类型的Menu:选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和弹出式菜单(PopupMenu)。 2. **创建Option Menu** - 在`res/menu`目录下创建XML文件来定义菜单项,每个菜单项是一个标签。 - ...

    android 各种菜单详解 经典完整代码

    Android菜单主要有三种类型:选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和弹出式菜单(PopupMenu)。选项菜单通常显示在屏幕顶部,与设备的硬件菜单按钮或虚拟菜单按钮关联;上下文菜单在长按某项内容时...

    应用源码之menu.zip

    菜单主要有三种类型:选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和弹出式菜单(PopupMenu)。 **选项菜单**是Android应用中最常见的菜单形式,通常出现在屏幕的右上角,由三个水平线的图标表示。当用户...

    android 多种菜单

    首先,Android菜单主要有三种类型:选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和弹出式菜单(PopupMenu)。每种菜单都有其特定的使用场景和创建方式。 1. 选项菜单: 选项菜单是应用主屏幕右上角的"三条...

    Andorid 下拉菜单源码

    在Android中,菜单不仅限于下拉菜单,还有其他形式,如Options Menu(选项菜单)和ContextMenu(上下文菜单)。这些菜单在不同的场景下有不同的用途,但基本的创建和处理逻辑与下拉菜单类似,都需要使用`Menu`和`...

    Toast+Menu.rar

    `Menu`分为几种类型:主菜单(OptionsMenu)、上下文菜单(ContextMenu)和弹出窗口菜单(PopupMenu)。创建`Menu`的基本流程: 1. 在`Activity`中重写`onCreateOptionsMenu(Menu menu)`方法,这里可以使用`...

    Android应用源码之MenuSample-IT计算机-毕业设计.zip

    项目中可能包含多个XML文件,每个文件代表一个特定的菜单层次,如选项菜单(OptionsMenu)、上下文菜单(ContextMenu)或弹出式菜单(PopupMenu)。 2. **菜单项的定义**:XML文件中的`<item>`元素用于定义菜单项,...

    Android应用源码之MenuSample.zip

    - 主要有三种类型的菜单:选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和弹出式菜单(PopupMenu)。 2. **创建菜单资源**: - 在res/menu目录下创建XML文件来定义菜单项,例如menu.xml。每个菜单项是元素...

    Android应用源码之menu-IT计算机-毕业设计.zip

    在Android中,菜单分为三种类型:选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和弹出式菜单(PopupMenu)。选项菜单通常在屏幕顶部的三道横线(汉堡菜单)或动作栏(ActionBar)中显示,而上下文菜单则在...

    android 自定义菜单实现 (仿UC浏览器)

    另外,还可以添加动画效果,如滑动展开和收缩,这可以通过自定义`PopupMenu`或者`OptionsMenu`的显示和消失动画来实现。 5. **特殊情况处理**: 对于弹出式菜单(PopupMenu),可以在需要的时候动态创建并显示,...

    Menu特绚效果

    在Android中,菜单主要分为三种类型:选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和弹出式菜单(PopupMenu)。选项菜单通常在屏幕顶部的Action Bar或Toolbar中显示,上下文菜单在长按某项内容时出现,而弹...

    安卓Android源码——MenuSample.rar

    1. **Android菜单基础**:在Android中,菜单主要分为三种类型:选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和弹出式菜单(PopupMenu)。选项菜单通常在屏幕顶部显示,而上下文菜单在长按元素时出现,弹出式...

    android菜单源码

    在Android中,菜单通常分为三种类型:选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和弹出式菜单(PopupMenu)。选项菜单通常在屏幕顶部的Action Bar中显示,上下文菜单则在长按操作时出现,而PopupMenus可以...

    Android开发之menu菜单

    1. **选项菜单(OptionsMenu)**:这是最常见的菜单类型,通常在屏幕底部显示,或者在Android 3.0及以上版本中与ActionBar结合使用。当用户按下设备的"MENU"键或在ActionBar上点击汉堡图标时,它会弹出。`...

Global site tag (gtag.js) - Google Analytics