我是靠谱客的博主 忧虑小刺猬,最近开发中收集的这篇文章主要介绍Menu的三个实现方式1:菜单的设计在人机交互中是非常人性化的,它提供了不同功能分组展示的能力。Android平台提供了3种菜单的实现方式,即选项菜单(OptionMenu)、上下文菜单(ContextMenu)、子菜单(SubMenu). ,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1:菜单的设计在人机交互中是非常人性化的,它提供了不同功能分组展示的能力。Android平台提供了3菜单的实现方式,即选项菜单(OptionMenu)、上下文菜单(ContextMenu)、子菜单(SubMenu). 

 

2:创建一个菜单的步骤:  设置菜单-----》得到菜单-----》监听菜单

1):重写onCreateOptionsMenu或者onCreateContextMenu

2):调用Menuadd方法添加菜单项(MenuItem),可以调用MneuItemsetIcon方法来为菜单设置图标。

 

3):当菜单项(Menuitem)被选择时,重写ActivityonOptionsItemSelected()

方法来响应事件。


java代码:

@Override
public boolean onCreateOptionsMenu(Menu menu){
//用基类的方法,以便调出系统菜单(如果有的话)
super.onCreateOptionsMenu(menu);

//添加菜单
menu.add(0,1,0,“重新开始”).setIcon(R.drawable.reflash);
menu.add(0,2,0,"游戏指南").setIcon(R.drawable.help);
menu.add(0,3,0,"关于游戏").setIcon(R.drawable.info);
menu.add(0,4,0,"不想玩了").setIcon(R.drawable.exit);
//返回值为“true”,表示菜单可见,即显示菜单
return true;
}
       看一看menu.add方法的参数:
       第一个int类型的group ID参数,代表的是组概念,你可以将几个菜单项归为一组,以便更好的以组的方式管理你的菜单按钮。
       第二个int类型的item ID参数,代表的是项目编号。这个参数非常重要,一个item ID对应一个menu中的选项。在后面使用菜单的时候,就靠这个item ID来判断你使用的是哪个选项。
       第三个int类型的order ID参数,代表的是菜单项的显示顺序。默认是0,表示菜单的显示顺序就是按照add的显示顺序来显示。
       第四个String类型的title参数,表示选项中显示的文字。



1 Option Menu 
这种应该是最常见的,一般手机上都会提供Menu的按钮,对应的就是这个菜单弹出。

 

主要步骤就是复写Activity父类中的onCreateOptionMenuMenu menu)方法,然后通过Menuadd方法来添加菜单进去。 
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    >

<TextView  

    android:layout_width="fill_parent" 

    android:layout_height="wrap_content" 

    android:text="测试选项菜单"/>

</LinearLayout>

 

public class MenuDemo extends Activity {

private static final int ITEM1 = Menu.FIRST;

private static final int ITEM2 = Menu.FIRST+1;

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.menutest);

    }

 

/**

 * 覆盖该方法添加菜单项

 */

    @Override

public boolean onCreateOptionsMenu(Menu menu) {

menu.add(0, 1, 0, "开始游戏");

menu.add(0, 2, 0, "暂停游戏");

menu.add(0, 3, 0, "退出游戏");

return true;

}

// public boolean onCreateOptionsMenu(Menu menu) {

// menu.add(0, 1, 0, "开始").setIcon(R.drawable.earth_01);

// menu.add(0, 2, 0, "暂停").setIcon(R.drawable.earth_02);

// menu.add(0, 3, 0, "退出").setIcon(R.drawable.earth_03);

// return true;

// }    

    /**

     * 覆盖该方法,响应菜单选项被单击事件

     */

    public boolean onOptionsItemSelected(MenuItem item) {

     switch (item.getItemId()) {

case 1:

setTitle("开始游戏!");//设置标题;可以通过Intent跳转到相关页面

Toast.makeText(MenuDemo.this, "开始游戏!", Toast.LENGTH_LONG).show();

break;

case 2:

setTitle("暂停游戏");

Toast.makeText(MenuDemo.this, "暂停游戏!", Toast.LENGTH_LONG).show();

break;

case 3:

setTitle("退出游戏");

Toast.makeText(MenuDemo.this, "推出游戏!", Toast.LENGTH_LONG).show();

}

     return true;

    }

}


2.Context Menu 
   当用户长时间按键不放,弹出的菜单称为上下文菜单。我们经常在windows中用鼠标右键单击弹出的菜单就是上下文菜单。

创建上下文ContextMenu菜单的步骤:

1、 覆盖ActivityonCreateContextMenu()方法,

2、 调用Menuadd方法添加菜单项

3  覆盖onContexItemSelected()方法,响应菜单单击事件

4  调用registerForContextMenu(View v)方法为视图注册上下文菜单v代表某一view

public void onCreateContextMenu (ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)

参数说明:

menu:需要显示的快捷菜单

vV是用户选择的界面元素

menuInfomenuInfo是所选择界面元素的额外信息

说明:这个onCreateContextMenuonCreateOptionsMenu函数不一样,onCreateOptionsMenu函数仅在选项菜单第一次启动时被调用一次,onCreateContextMenu函数在每次启动都将会被调用一次。 

 

当菜单项(Menuitem)被选择时,重写ActivityonOptionsItemSelected()

方法来响应事件。

public boolean onContextItemSelected (MenuItem item)

 

 

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    >

 

<TextView 

    android:id="@+id/TextView01" 

    android:layout_width="fill_parent" 

    android:layout_height="fill_parent" 

    android:text="测试上下文菜单(改变文字背景色)">

    

</TextView>

</LinearLayout>

 

public class MenuDemo2 extends Activity {

private TextView myTV;

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.menutest2);

myTV = (TextView)findViewById(R.id.TextView01);

registerForContextMenu(myTV);

}

@Override

public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {

menu.add(0, 1, 0, "红色背景");

menu.add(0, 2, 0, "绿色背景");

menu.add(0, 3, 0, "白色背景");

}

@Override

public boolean onContextItemSelected(MenuItem item) {

switch (item.getItemId()) {

case 1:

myTV.setBackgroundColor(Color.RED);

break;

case 2:

myTV.setBackgroundColor(Color.GREEN);

break;

case 3:

myTV.setBackgroundColor(Color.WHITE);

break;

}

return true;

}

}

 

 

3 SubMenu :
子菜单就是将相同功能的分组进行多级显示的一种菜单。就是菜单下面还有菜单。

实际上就是把以上两种结合到一起。

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    >

<TextView  

    android:layout_width="fill_parent" 

    android:layout_height="wrap_content" 

    android:text="测试子菜单"/>

</LinearLayout>

 

public class MenuDemo3 extends Activity {

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.menutest3);

    }

/**

 * 覆盖该方法添加子菜单项

 */

public boolean onCreateOptionsMenu(Menu menu) {

//为当前“文件”菜单添加子菜单file

SubMenu file = menu.addSubMenu("文件");

SubMenu edit = menu.addSubMenu("編輯");

SubMenu del = menu.addSubMenu("删除");

file.add(0, 1, 0, "新建");

file.add(0, 2, 0, "打开");

edit.add(1,3,0,"修改名称");

edit.add(1,4,0,"修改密码");

edit.add(1,5,0,"修改性别");

return true;

}

    

    /**

     * 覆盖该方法,响应菜单选项被单击事件

     */

    public boolean onOptionsItemSelected(MenuItem item) {

     switch (item.getItemId()) {

case 1:

setTitle("新建文件!");//改变标题,也可以通过Intent跳转到新建页面

break;

case 2:

setTitle("打开文件!");

break;

}

     return true;

    }

}

最后

以上就是忧虑小刺猬为你收集整理的Menu的三个实现方式1:菜单的设计在人机交互中是非常人性化的,它提供了不同功能分组展示的能力。Android平台提供了3种菜单的实现方式,即选项菜单(OptionMenu)、上下文菜单(ContextMenu)、子菜单(SubMenu). 的全部内容,希望文章能够帮你解决Menu的三个实现方式1:菜单的设计在人机交互中是非常人性化的,它提供了不同功能分组展示的能力。Android平台提供了3种菜单的实现方式,即选项菜单(OptionMenu)、上下文菜单(ContextMenu)、子菜单(SubMenu). 所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部