概述
1:菜单的设计在人机交互中是非常人性化的,它提供了不同功能分组展示的能力。Android平台提供了3种菜单的实现方式,即选项菜单(OptionMenu)、上下文菜单(ContextMenu)、子菜单(SubMenu).
2:创建一个菜单的步骤: 设置菜单-----》得到菜单-----》监听菜单
(1):重写onCreateOptionsMenu或者onCreateContextMenu。
(2):调用Menu的add方法添加菜单项(MenuItem),可以调用MneuItem的setIcon方法来为菜单设置图标。
(3):当菜单项(Menuitem)被选择时,重写Activity的onOptionsItemSelected()
方法来响应事件。
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父类中的onCreateOptionMenu(Menu menu)方法,然后通过Menu的add方法来添加菜单进去。
<?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、 覆盖Activity的onCreateContextMenu()方法,
2、 调用Menu的add方法添加菜单项
3、 覆盖onContexItemSelected()方法,响应菜单单击事件
4、 调用registerForContextMenu(View v)方法为视图注册上下文菜单,v代表某一view
public void onCreateContextMenu (ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)
参数说明:
menu:需要显示的快捷菜单
v:V是用户选择的界面元素
menuInfo:menuInfo是所选择界面元素的额外信息
说明:这个onCreateContextMenu与onCreateOptionsMenu函数不一样,onCreateOptionsMenu函数仅在选项菜单第一次启动时被调用一次,而onCreateContextMenu函数在每次启动都将会被调用一次。
当菜单项(Menuitem)被选择时,重写Activity的onOptionsItemSelected()
方法来响应事件。
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). 所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复