Android 高手進階教程:[6]布局定義菜單

大家好,我們上一節講的是 LayoutInflater 的 使用,而這一節我將講一

下 MenuInflater ,顧名思義,LayoutInflater 是用來解析定義在 layout 下的

布局文件,那麼 MenuInflater 是不是用來解析定義在 menu 目錄下的菜單布局

文件呢? 恭喜你答對了!(*^__^*) 嘻嘻……

我們傳統意義上 的定義菜單感覺比較繁瑣,當我們使用 MenuInflater 來

生成菜單,你會發現是多麼的爽朗,呵呵,我今天的小 Demo,是定義四個菜單,

並且實現了一個菜單事件。就是我們點擊設置 (Setting )菜單,進入手機設置

狀態!下面看一下效果圖:

下面是實現Demo 的詳細步驟

建立一個Android 工程我們命名為MenuInflaterDemo .

在res 目錄下創建menu 目錄,並且創建options_menu.xml (我們定義的菜

單)文件,代碼如下:

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="@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>

<?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 )的響應事件.全部代碼如下:

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(){

finalIntentsettings=

Intent(android.provider.Settings.ACTION_SETTINGS);

settings.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |

Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);

startActivity(settings);

}

}

package com.android.tutor;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

new

spacerua�e'��"x�)ze:14px; font-family:'Times New Roman'; " >

import android.view.Menu;

import android.view.MenuInflater;

import android.view.MenuItem;

public class MenuInflaterDemo extends Activity {

@Override

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(){

finalIntentsettings=

Intent(android.provider.Settings.ACTION_SETTINGS);

settings.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |

Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);

startActivity(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(){

finalIntentsettings=

Intent(android.provider.Settings.ACTION_SETTINGS);

settings.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |

Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);

startActivity(settings);

}

運行代碼之,點擊模擬器上的menu 按鈕將會出現上述效果圖!

本文內容整理自網絡, 文中所有觀點看法不代表淘大白的立場