大家好,我们上一节讲的是LayoutInflater 的 使用,而这一节我将讲一下MenuInflater ,顾名思义,LayoutInflater 是用来解析定义在layout 下的布局文件,那么MenuInflater 是不是用来解析定义在menu目录下的菜单布局文件呢? 恭喜你答对了!(*^__^*) 嘻嘻……
我们传统意义上 的定义菜单感觉比较繁琐,当我们使用MenuInflater 来生成菜单,你会发现是多么的爽朗,呵呵,我今天的小Demo,是定义四个菜单,并且实现了一个菜单事件。就是我们点击设置 (Setting )菜单,进入手机设置状态!下面看一下效果图:
下面是实现Demo 的详细步骤:
一、建立一个Android 工程我们命名为MenuInflaterDemo .
二、在res 目录下创建menu 目录,并且创建options_menu.xml (我们定义的菜单)文件,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_add"
android:title="Add"
android:icon="@android:drawable/ic_menu_add"
/>
<item android:id="@+id/menu_wallaper"
android:title="Wallpaper"
android:icon="@android:drawable/ic_menu_gallery"
/>
<item android:id="@+id/menu_search"
android:title="Search"
android:icon="@android:drawable/ic_search_category_default"
/>
<item android:id="@+id/menu_setting"
android:title="Settings"
android:icon="@android:drawable/ic_menu_preferences"
/>
</menu>
三、主类MenuInflaterDemo.java 的编码,这里写的代码很少哦,我这里只写了第四个菜单(Settings )的响应事件.全部代码如下:
package com.android.tutor;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
public class MenuInflaterDemo extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.options_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_add:
break;
case R.id.menu_wallaper:
break;
case R.id.menu_search:
break;
case R.id.menu_setting:
showSettings();
break;
}
return super.onOptionsItemSelected(item);
}
private void showSettings(){
final Intent settings = new Intent(android.provider.Settings.ACTION_SETTINGS);
settings.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
startActivity(settings);
}
}
四、运行代码之,点击模拟器上的menu 按钮将会出现上述效果图!
分享到:
相关推荐
以下是关于在Android中使用XML定义菜单资源的详细说明: 1. **菜单资源的位置**: 菜单资源通常被存储在项目的`res/menu`目录下。如果这个目录不存在,需要手动创建。在这个目录中,开发者可以创建一个或多个XML...
Android高手进阶教程之----Android 中MenuInflater的使用(布局定义菜单)! .doc Android高手进阶教程之----Android 中Preferences的使用! .doc Android高手进阶教程之----Android 中自定义View的应用.doc Android高手...
首先,要在Android项目中使用菜单,需要在资源目录(res)下创建一个名为menu的文件夹,并在该文件夹中添加XML布局文件来定义菜单项。例如,可以创建一个名为menu.xml的文件,并使用XML标签来定义菜单项。每个菜单项...
- 在自定义菜单中,你可以添加动画、分组、子菜单、滑动效果等,提高用户体验。 5. **适配不同Android版本** - 考虑到Android版本的兼容性问题,需要确保在API 11以下使用`android:showAsAction`属性的旧版语法`...
在Android移动应用开发中,菜单资源的定义与使用是提升用户体验和增强应用功能的重要组成部分。Android支持三种类型的菜单:选项菜单、上下文菜单和子菜单,它们都可以在`res/menu`目录下通过XML文件进行定义。 1. ...
首先,我们需要在项目的res/menu目录下创建一个XML文件,例如`menu.xml`,用于定义菜单项。在这个XML文件中,我们可以使用`<menu>`标签作为根元素,然后用`<item>`标签来定义每个菜单项,包括其ID、标题、图标以及...
Android Studio提供了强大的设计工具,可以在图形界面中设计菜单布局,预览效果,并自动生成对应的XML代码,极大地提高了开发效率。 9. **最佳实践** - 保持菜单简洁,避免过多的选项,使用户易于理解和操作。 -...
在Android中,菜单通常可以通过XML布局文件定义,如menu.xml,然后在Activity中通过MenuInflater进行解析并显示。在动态菜单中,我们可能需要自定义菜单项的视图,如ImageView或TextView,并在代码中动态设置动画。...
可以使用`MenuInflater`来动态加载菜单布局,或者直接在XML中定义菜单结构。每个菜单项可以关联一个图标和文字描述,也可以添加点击事件监听器,实现相应的功能。 在实现过程中,要注意兼容性问题,因为不同的...
不过,最常用的库是`Android Design Support Library`中的`NavigationView`,它与`DrawerLayout`结合使用,能够轻松创建符合Material Design规范的侧滑菜单。 1. **DrawerLayout**:`DrawerLayout`是Android SDK...
使用`MenuInflater`的`inflate()`方法将菜单布局填充到活动中。 3. **处理菜单项的点击事件** - 为了响应用户点击菜单项,需要重写`onOptionsItemSelected(MenuItem item)`方法。在这个方法中,通过比较`item....
1. 在XML布局文件中定义菜单资源: 菜单通常在res/menu目录下的XML文件中定义。例如,创建一个名为`main_menu.xml`的文件: ```xml <menu xmlns:android="http://schemas.android.com/apk/res/android"> ...
可以使用`MenuInflater`来加载XML资源文件,该文件定义了菜单项的ID、文字、图标等。然后在`onCreateOptionsMenu()`或`onPrepareOptionsMenu()`中填充菜单项。 6. **响应菜单点击事件**: 通过重写`...
- 在XML布局文件中定义菜单结构。例如,在res/menu目录下创建一个xml文件,如`main_menu.xml`,使用`<menu>`标签作为根元素,然后通过`<group>`、`<item>`和`<submenu>`标签构建层次结构。 - `<group>`用于组织...
然后在`onCreateOptionsMenu()`中使用`MenuInflater`来加载这个布局: ```java MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu, menu); ``` 7. **Menu样式和主题** Android允许...
6. **自定义菜单**: Android允许开发者通过继承`MenuItem`或`SubMenu`类来自定义菜单项,可以实现更复杂的功能或界面效果。 老罗的源码和PPT将帮助开发者更直观地理解这些概念,通过实际案例展示如何创建、配置和...
而XML静态定义则更常见,它允许开发者在`res/menu`目录下的XML文件中预先定义菜单结构,便于维护和复用。 XML配置文件中的菜单元素主要有`<menu>`、`<item>`、`<group>`等。`<menu>`作为根节点,包含一系列的菜单项...
接下来,在res/menu/menu.xml文件中定义菜单项,这里创建了一个菜单项ID为@+id/settings,并将它与之前定义的字符串资源关联: ```xml android:id="@+id/settings" android:title="@string/settings_label" ...
1. 在`res/menu`目录下创建一个新的XML文件,例如`options_menu.xml`,定义菜单项。 ```xml <menu xmlns:android="http://schemas.android.com/apk/res/android"> android:id="@+id/action_save" android:icon...
同时,Android提供了多种方法来创建和管理菜单,如使用`<menu>`标签在XML中定义菜单结构,或者在Java代码中利用`MenuInflater`和`onCreateOptionsMenu()`方法。二级菜单通常会在点击主菜单项后弹出,可以使用`...