`
韩悠悠
  • 浏览: 827273 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

MenuInflater生成菜单

 
阅读更多

我们传统意义上 的定义菜单感觉比较繁琐,当我们使用MenuInflater 来生成菜单,你会发现是多么的爽朗,呵呵,我今天的小Demo,是定义四个菜单,并且实现了一个菜单事件。就是我们点击设置 (Setting )菜单,进入手机设置状态!下面看一下效果图:



 



 

   下面是实现Demo 的详细步骤:

       一、建立一个Android 工程我们命名为MenuInflaterDemo .

       二、在res 目录下创建menu 目录,并且创建options_menu.xml (我们定义的菜单)文件,代码如下:

Java代码:

1.        <?xml version="1.0" encoding="utf-8"?>

2.        <menu

3.        xmlns:android="http://schemas.android.com/apk/res/android">

4.        <item android:id="@+id/menu_add"

5.        android:title="Add"

6.        android:icon="@android:drawable/ic_menu_add"

7.        />

8.        <item android:id="@+id/menu_wallaper"

9.        android:title="Wallpaper"

10.     android:icon="@android:drawable/ic_menu_gallery"

11.     />

12.     <item android:id="@+id/menu_search"

13.     android:title="Search"

14.     android:icon="@android:drawable/ic_search_category_default"

15.     />

16.     <item android:id="@+id/menu_setting"

17.     android:title="Settings"

18.     android:icon="@android:drawable/ic_menu_preferences"

19.     />

20.     </menu>

 

    三、主类MenuInflaterDemo.java 的编码,这里写的代码很少哦,我这里只写了第四个菜单(Settings )的响应事件.全部代码如下:

Java代码:

1.        package eoe.demo;

2.        import android.app.Activity;

3.        import android.content.Intent;

4.        import android.os.Bundle;

5.        import android.view.Menu;

6.        import android.view.MenuInflater;

7.        import android.view.MenuItem;

8.        public class MenuInflaterDemo extends Activity {

9.        @Override

10.     public void onCreate(Bundle savedInstanceState) {

11.     super.onCreate(savedInstanceState);

12.     setContentView(R.layout.main);

13.     }

14.     @Override

15.     public boolean onCreateOptionsMenu(Menu menu) {

16.     MenuInflater inflater = getMenuInflater();

17.     inflater.inflate(R.menu.options_menu, menu);

18.     return true;

19.     }

20.     @Override

21.     public boolean onOptionsItemSelected(MenuItem item) {

22.     switch (item.getItemId()) {

23.     case R.id.menu_add:

24.     break;

25.     case R.id.menu_wallaper:

26.     break;

27.     case R.id.menu_search:

28.     break;

29.     case R.id.menu_setting:

30.     showSettings();

31.     break;

32.     }

33.     return super.onOptionsItemSelected(item);

34.     }

35.     private void showSettings(){

36.     final Intent settings = new Intent(android.provider.Settings.ACTION_SETTINGS);

37.     settings.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |

38.     Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);

39.     startActivity(settings);

40.     }

41.     }

    四、运行代码之,点击模拟器上的menu 按钮将会出现上述效果图!

 

 

 

  1. public class MenuInflaterTest extends Activity {   
  2.   
  3.     @Override  
  4.   
  5.     public void onCreate(Bundle savedInstanceState) {   
  6.   
  7.        super.onCreate(savedInstanceState);   
  8.   
  9.        setContentView(R.layout.main);   
  10.   
  11.     }   
  12.   
  13.     
  14.   
  15.     public boolean onCreateOptionsMenu(Menu menu) {   
  16.   
  17.        // 获取当前的菜单   
  18.   
  19.        MenuInflater inflater = getMenuInflater();   
  20.   
  21.        // 填充菜单   
  22.   
  23.        inflater.inflate(R.menu.option_menu, menu);   
  24.   
  25.        return true;   
  26.   
  27.     }   
  28.   
  29.     
  30.   
  31.     /**  
  32.  
  33.      * 对菜单点击事件处理  
  34.  
  35.      */  
  36.   
  37.     public boolean onOptionsItemSelected(MenuItem item) {   
  38.   
  39.        switch (item.getItemId()) {   
  40.   
  41.        case R.id.menu_add:   
  42.   
  43.            break;   
  44.   
  45.        case R.id.menu_wallaper:   
  46.   
  47.            break;   
  48.   
  49.        case R.id.menu_search:   
  50.   
  51.            break;   
  52.   
  53.        case R.id.menu_setting:   
  54.   
  55.            showSettings();   
  56.   
  57.            break;   
  58.   
  59.        }   
  60.   
  61.        return super.onOptionsItemSelected(item);   
  62.   
  63.     }   
  64.   
  65.     
  66.   
  67.     /**  
  68.  
  69.      * 显示设置选项  
  70.  
  71.      */  
  72.   
  73.     private void showSettings() {   
  74.   
  75.        Intent settings = new Intent   
  76.   
  77.        (android.provider.Settings.ACTION_SETTINGS);   
  78.   
  79.        settings.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK    
  80.   
  81.               | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);   
  82.   
  83.        startActivity(settings);   
  84.   
  85.     }   
  86.   
  87. }   
  88.   
  89. }  
public class MenuInflaterTest extends Activity {
 
    @Override
 
    public void onCreate(Bundle savedInstanceState) {
 
       super.onCreate(savedInstanceState);
 
       setContentView(R.layout.main);
 
    }
 
 
 
    public boolean onCreateOptionsMenu(Menu menu) {
 
       // 获取当前的菜单
 
       MenuInflater inflater = getMenuInflater();
 
       // 填充菜单
 
       inflater.inflate(R.menu.option_menu, menu);
 
       return true;
 
    }
 
 
 
    /**
 
     * 对菜单点击事件处理
 
     */
 
    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() {
 
       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);
 
    }
 
}
 
}



Main.xml

Xml代码  

  1. <?xml version="1.0" encoding="utf-8"?>  
  2.   
  3. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  4.   
  5.     android:orientation="vertical"  
  6.   
  7.     android:layout_width="fill_parent"  
  8.   
  9.     android:layout_height="fill_parent"  
  10.   
  11.     >  
  12.   
  13. <TextView     
  14.   
  15.     android:layout_width="fill_parent"    
  16.   
  17.     android:layout_height="wrap_content"    
  18.   
  19.     android:text="@string/hello"  
  20.   
  21.     />  
  22.   
  23. </LinearLayout>  
<?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="@string/hello"
 
    />
 
</LinearLayout>



Option_menu.xml

Xml代码  

  1. <?xml version="1.0" encoding="utf-8"?>     
  2.   
  3. <menu xmlns:android="http://schemas.android.com/apk/res/android">     
  4.   
  5.     <item android:id="@+id/menu_add"     
  6.   
  7.         android:title="Add"     
  8.   
  9.         android:icon="@android:drawable/ic_menu_add"/>     
  10.   
  11.      <item android:id="@+id/menu_wallaper"     
  12.   
  13.         android:title="Wallpaper"     
  14.   
  15.         android:icon="@android:drawable/ic_menu_gallery"/>     
  16.   
  17.     <item  android:id="@+id/menu_search"     
  18.   
  19.         android:title="Search"     
  20.   
  21.         android:icon="@android:drawable/ic_search_category_default"/>     
  22.   
  23.     <item  android:id="@+id/menu_setting"     
  24.   
  25.         android:title="Settings"     
  26.   
  27.       android:icon="@android:drawable/ic_menu_preferences"/>                             </menu>    

  • 大小: 18.7 KB
  • 大小: 16.3 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics