本文参考自:http://weizhulin.blog.51cto.com/1556324/311446/
利用一个小Demo来学习这种制作Menu的方法,这个Demo实现了是个菜单,并且实现了一个菜单事件。效果图如下:
点击settings会进入菜单事件,显示的页面如下:
Demo的具体步骤如下:
首先,需要在要用到的图标(search、settings等)拷贝到res的drawables的目录下面。
其次,要在res的menu下面建立一个xml文件,这个xml文件决定了你要添加几个menu菜单,每个menu菜单叫什么名字,各个menu菜单之间是怎么样的一个相对位置。
- view plaincopy to clipboardprint?
- <?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="@drawable/ic_menu_add"
- />
- <item android:id="@+id/menu_wallaper"
- android:title="Wallpaper"
- android:icon="@drawable/ic_menu_gallery"
- />
- <item android:id="@+id/menu_search"
- android:title="Search"
- android:icon="@drawable/ic_search_category_default"
- />
- <item android:id="@+id/menu_setting"
- android:title="Settings"
- android:icon="@drawable/ic_menu_preferences"
- />
- </menu>
最后在主类MenuInlater.java中来调用这个menu下的文件,并且实现菜单点击的事件。
- view plaincopy to clipboardprint?
- 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);
- }
- }