Android程序使用菜单是非常之方便的,而且Android系统的菜单也做得很有特色,系统有专门的Menu键,而且菜单的样式不同于通常的弹
出或者下拉菜单,Android的菜单更像是堆砌起来的。
Menu是android.view包里面的接口,它菜单通常是作为Activity的一部分。在Android的文档里面这样描述Menu:
通常,每个Activity都支持(这里意思应该是已经创建好,默认存在菜单)一个选项菜单(option
menu)和相应的事件响应。可以为菜单添加菜单项和相应的事件处理。添加菜单项最简单的方法是是使用XML文件,在Menu标签下使用
MenuInflater,然后重载Activity的onOptionsItemSelected(MenuItem)
方法
或者onContextItemSelected(MenuItem)
方法,在方法体里添加事件处理代码。
总的来说,有三种类型的菜单:
Contex Menus,情境菜单:不支持菜单快捷键和图标。
Options Menus,选项菜单:支持图标,但不支持菜单项选中标记。
Sub menus,子菜单,不支持图标,不能再有子菜单。
除了使用xml文件的形式,同样也可以在代码中添加菜单项,只需要重载Activity的public
boolean
onCreateOptionsMenu(Menu menu) 方法,示例如下:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(0, Menu.FIRST, Menu.NONE, "我的位置");
menu.add(0, Menu.FIRST + 1, Menu.NONE, "卫星地图");
menu.add(0, Menu.FIRST + 2, Menu.NONE, "清除图层");
return true;
}
Menu.add(int groupId, int itemId, int order, CharSequence
title)方法,第一个参数用来指定菜单项分组,API文档说分组可以用来进行分组状态更新,第二个参数很重要,是菜单项的唯一ID,在后面菜单事件处
理时要用到,第三个参数为排序值,用来指定菜单项顺序,可以无视,最后一个参数为菜单项的标题,在屏幕上面显示用。
响应的事件处理代码示例如下:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch (item.getItemId()) {//获取菜单项的ID,即前面Menu.add方法的第二个参数
case Menu.FIRST:
myLocationOverlay.runOnFirstFix(new Runnable() {//定位,并移动地图到自己的位置
public void run() {
mc.animateTo(myLocationOverlay.getMyLocation());
}
});
break;
case Menu.FIRST + 1://切换地图视图
if (isSatelite) {
map.setSatellite(false);
map.setStreetView(false);
item.setTitle("卫星地图");
isSatelite = false;
} else {
map.setSatellite(true);
map.setStreetView(true);
item.setTitle("普通地图");
isSatelite = true;
}
break;
case Menu.FIRST + 2://清楚所有标记
overlay.clear();
break;
default:
break;
}
return true;
}
另一种方式是使用XML文件和MenuInflater类来创建菜单。Android使用XML作为资源管理的方式,独立于编码,具有更高的灵活性
和扩展性。
在res下面建立menu文件夹,然后新建一个xml文档,命名为menu.xml。要建立的菜单项与上面相同。文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="我的位置" android:id="@+id/ID_MYPOS"></item>
<item android:title="卫星地图" android:id="@+id/ID_MAPTYPE"></item>
<item android:title="清除图层" android:id="@+id/ID_CLEAR"></item>
</menu>
提示:ADT带有XML文件编辑功能,可以根据XML文件类型来启动适合的编辑工具,无需手动编写XML文档,用图形化工具即可。
需要注意的是这里将菜单项的ID进行了修改,让Android
SDK自动生成ID,所以需要修改onOptionsItemSelected里面的Switch case条件。修改为:
switch (item.getItemId()) {
case R.id.ID_MYPOS:
//...
break;
case R.id.ID_MAPTYPE:
//...
break;
case R.id.ID_CLEAR:
//...
break;
default:
break;
}
搞定。看看酷酷的Menu截图吧:
地图是雄伟的紫禁城~~绿波环绕,金瓦红墙,气势非凡!
- 大小: 240.1 KB
分享到:
相关推荐
本练习题旨在让你掌握如何在Android应用中使用菜单资源来实现一个“游记”应用的功能。以下是详细的步骤和知识点说明: 1. **创建基本布局**: - 首先,你需要在`activity_main.xml`布局文件中设计应用的首界面。...
`onOptionsItemSelected(MenuItem item)`方法处理用户在选项菜单中点击的各个选项。通过`switch-case`结构,可以根据不同的菜单ID执行相应的操作,例如更改图片背景和显示文本。 ```java @Override public boolean ...
在示例代码中,我们使用了 Menu 类的 add 方法将菜单项添加到菜单中,然后使用 MenuItem 类的 setTitle 方法设置菜单项的标题。 五、结论 本文档详细介绍了 Android 中的菜单系统,包括上下文菜单、下拉菜单和选项...
子菜单是在选项菜单中的某个条目展开的额外选项集合。它们可以用于组织相关的操作,特别是当菜单项过多时。在XML中,我们可以使用`<group>`标签创建子菜单,并使用`<item>`标签定义子菜单的条目。例如: ```xml ....
本文将深入探讨如何在Android Studio中实现底部自定义菜单,并结合"GreatWallApp"这一项目实例,来讲解相关的编程知识。 首先,底部自定义菜单通常指的是在应用界面底部设置的一排图标或文字按钮,用户可以通过点击...
这个压缩包可能包含了一个实现此类菜单的示例项目,让我们来详细探讨一下这种菜单的设计理念以及如何在Android应用中实现它。 首先,圆形旋转菜单的核心概念是利用旋转动画和触摸事件来展示一系列选项。用户点击或...
首先,我们需要理解Android菜单的工作原理。在Android中,菜单项是通过` onCreateOptionsMenu()`和` onOptionsItemSelected()`方法在`Activity`或`Fragment`中创建和处理的。我们通常使用`MenuItem`对象的`setIcon()...
使用LayoutInflater服务,我们可以将这些布局文件转换为View对象,然后在Adapter中使用它们。 最后,将适配器与ListView或RecyclerView关联起来,设置监听器来处理用户的点击事件。例如,当用户点击一个类别时,...
本教程将深入探讨如何在Android应用中使用Fragment,以及如何进行嵌套使用,特别是在创建底部菜单和顶部菜单的场景下,类似微信和QQ的分页菜单设计。 1. **Fragment的基本使用**: - 创建Fragment:通过继承...
在Android仿美团外卖菜单界面中,我们需要将菜单项的数据绑定到ListView控件和StickyListHeadersListView控件上。我们可以使用Adapter来实现数据绑定。Adapter将菜单项的数据转换为View对象,然后将其添加到ListView...
在Android中,我们可以使用`PopupMenu`、`NavigationView`或者自定义布局来实现这种多级菜单。 在本项目中,"带有折纸动画的二级分类菜单"可能使用了自定义布局和动画来实现。折纸动画是通过操纵视图的变形和移动来...
在Android应用开发中,设计一个美观且用户友好的菜单是至关重要的,因为它直接影响到用户的交互体验。"android超漂亮菜单" 提供了一种实现方法,它以丝般顺滑的操作感和独特的视觉效果吸引用户。下面我们将深入探讨...
首先,我们需要理解Android菜单的基本概念。在Android中,菜单通常通过`Menu`类来实现,它可以在Activity的`onCreateOptionsMenu()`方法中进行定义和填充。然而,对于多级菜单,我们可能需要自定义视图或使用现有的...
如果只希望在特定`Activity`或`Fragment`中改变菜单的显示方式,可以在对应的XML布局文件中添加一个自定义的`PopupWindow`,然后在`onCreateOptionsMenu()`中使用这个`PopupWindow`来替代默认的菜单。 此外,对于...
在Android中,我们可以使用`Path`对象来定义一条路径,然后通过`ValueAnimator`将视图沿着这条路径移动,创建出独特的交互式菜单效果。例如,当用户点击按钮时,菜单可以从按钮的位置沿着预定义的路径滑出。 要创建...
在这个“android ExpandableListView三级菜单的使用”示例中,我们将深入探讨如何创建并操作一个支持三级菜单的`ExpandableListView`。 首先,`ExpandableListView`是`ListView`的扩展,它提供了更丰富的功能,可以...
1、在android Activity中重写onCreateOptionsMenu(),onOptionsItemSeclected() 与onCreateContextMenu()与onContextItemSelected()来实现OptionsMenu 与ContextMenu菜单。 2、子菜单的使用
这个Demo可能使用了`SlidingMenu`库,这是一个流行的选择,用于在Android应用中添加侧滑菜单功能。`SlidingMenu`库提供了高度定制的选项,可以调整菜单的显示方式,如滑动速度、宽度和动画效果。 2. **布局设计** ...
- 在自定义菜单中,你可以添加动画、分组、子菜单、滑动效果等,提高用户体验。 5. **适配不同Android版本** - 考虑到Android版本的兼容性问题,需要确保在API 11以下使用`android:showAsAction`属性的旧版语法`...
在Android中,我们可以利用自定义View或者自定义布局来构建这样的圆形菜单。自定义View允许开发者完全控制UI的绘制过程,包括菜单项的形状、颜色以及动画效果。在这个过程中,可能需要对`onDraw()`方法进行重写,...