Android-三种菜单栏实现

Android-三种菜单栏实现(OptionMenu,SubMenu,ContextMenu)


1.回顾

   上篇学习了 安卓的 notification 通知实现

2.重点

   (1)OptionMenu 的 动态和 静态实现

   (2)Submenu 的动态和静态实现

   (3)ContextMenu 的 动态和静态实现

3.OptionMenu实现

   3.1 OptionMenu 菜单栏效果图

                                                             Android-三种菜单栏实现_第1张图片

     3.2 静态实现(menu 文件下新建 menu.xml)

[html] view plain copy
  1. xml version="1.0" encoding="utf-8"?>  
  2. <menu xmlns:android="http://schemas.android.com/apk/res/android" >  
  3.   
  4.     <item  
  5.         android:id="@+id/option_item1"  
  6.         android:orderInCategory="100"  
  7.         android:title="去OptionActivity"/>  
  8.     <item  
  9.         android:id="@+id/option_item2"  
  10.         android:orderInCategory="100"  
  11.         android:title="去Contextmenu"/>  
  12.   
  13. menu> 

    3.3 业务实现

[java] view plain copy
  1. /** 
  2.  * 重写 onCreateOptionsMenu 
  3.  */  
  4. @Override  
  5. public boolean onCreateOptionsMenu(Menu menu) {  
  6.   
  7.     //动态实现  
  8.  MenuItem item= menu.add(111,"河南");  
  9.  item.setTitle("原");  
  10.     menu.add(121,"理工");  
  11.     menu.add(131,"大学");  
  12.     menu.add(231,"焦作");  
  13.       
  14.     //加载 布局实现  
  15.     getMenuInflater().inflate(R.menu.option_menu, menu);  
  16.     return super.onCreateOptionsMenu(menu);  

   3.4 选择事件 

[java] view plain copy
  1. /** 
  2.      * 菜单 点击 重写onMenuItemSelected 
  3.      */  
  4.     @Override  
  5.     public boolean onMenuItemSelected(int featureId, MenuItem item) {  
  6.           
  7.          Toast.makeText(getApplicationContext(),featureId+" | "+item.getTitle(),Toast.LENGTH_LONG).show();  
  8.         // item 点击  
  9.         switch (item.getItemId()) {  
  10.         case R.id.option_item1:  
  11.              Intent intent= new Intent(MainActivity.this,OptionActivity.class);  
  12.              intent.putExtra("data",item.getTitle());  
  13.              item.setIntent(intent);  
  14.             break;  
  15.         case R.id.option_item2:  
  16.             Intent intent1= new Intent(MainActivity.this,ContextmenuActivity.class);  
  17.              item.setIntent(intent1);  
  18.             break;  
  19.         }  
  20.         return super.onMenuItemSelected(featureId, item);  
  21.     } 

4.Submenu 实现

    4.1 SubMenu 菜单效果图

                                                              Android-三种菜单栏实现_第2张图片

   4.2 静态实现 menu.xml

[html] view plain copy
  1. xml version="1.0" encoding="utf-8"?>  
  2. <menu xmlns:android="http://schemas.android.com/apk/res/android" >  
  3.   
  4.     <item  
  5.         android:id="@+id/sub_one"  
  6.         android:title="工程">  
  7.         <menu>  
  8.             <item  
  9.                 android:id="@+id/sub_one_item1"  
  10.                 android:orderInCategory="100"  
  11.                 android:title="Open project"/>  
  12.             <item  
  13.                 android:id="@+id/sub_one_item2"  
  14.                 android:orderInCategory="100"  
  15.                 android:title="Close project"/>  
  16.             <item  
  17.                 android:id="@+id/sub_one_item3"  
  18.                 android:orderInCategory="100"  
  19.                 android:title="HI project"/>  
  20.         menu>  
  21.     item>  
  22.     <item  
  23.         android:id="@+id/sub_two"  
  24.         android:title="窗体">  
  25.         <menu>  
  26.             <item  
  27.                 android:id="@+id/sub_two_item1"  
  28.                 android:orderInCategory="100"  
  29.                 android:title="show view"/>  
  30.             <item  
  31.                 android:id="@+id/sub_two_item2"  
  32.                 android:orderInCategory="100"  
  33.                 android:title="preference"/>  
  34.             <item  
  35.                 android:id="@+id/sub_two_item3"  
  36.                 android:orderInCategory="100"  
  37.                 android:title="New Window"/>  
  38.         menu>  
  39.     item>  
  40.   
  41. menu> 

   4.3 业务实现

[java] view plain copy
  1. /** 
  2.      * 创建菜单 
  3.      */  
  4.     @Override  
  5.     public boolean onCreateOptionsMenu(Menu menu) {  
  6.          
  7.         //动态创建(代码创建)  
  8.         //添加第一项  
  9. //      SubMenu subMenu= menu.addSubMenu("工程");  
  10. //      subMenu.add(1, 1, 1,"打开工程");  
  11. //      subMenu.add(1, 2, 1,"关闭工程");  
  12. //      subMenu.add(1, 3, 1,"Build工程");  
  13. //      subMenu.add(1, 4, 1,"Clean工程");  
  14. //      //添加第二项  
  15. //      SubMenu subMenu1= menu.addSubMenu("窗口");  
  16. //      subMenu1.add(2, 1, 1,"new Window");  
  17. //      subMenu1.add(2, 2, 1,"Editer");  
  18. //      subMenu1.add(2, 3, 1,"Show View");  
  19. //      subMenu1.add(2, 4, 1,"Preference");  
  20.           
  21.         //布局实现  
  22.         getMenuInflater().inflate(R.menu.sub_menu, menu);  
  23.   
  24.         return super.onCreateOptionsMenu(menu);  
  25.     }  
  26.     /** 
  27.      * item 点击事件 
  28.      */  
  29.     @Override  
  30.     public boolean onOptionsItemSelected(MenuItem item) {  
  31.           
  32.         //可以同过 id 判断  
  33.           
  34.         Toast.makeText(getApplicationContext(),item.getTitle(),Toast.LENGTH_LONG).show();  
  35.           
  36.         return super.onOptionsItemSelected(item);  
  37.     } 

5.ContextMenu 上下文菜单实现

    5.1 ContextMenu 菜单效果图

                                                             Android-三种菜单栏实现_第3张图片


     5.2 静态实现 布局

[html] view plain copy
  1. xml version="1.0" encoding="utf-8"?>  
  2. <menu xmlns:android="http://schemas.android.com/apk/res/android" >  
  3.   
  4.     <item  
  5.         android:id="@+id/context_item1"  
  6.         android:orderInCategory="100"  
  7.         android:showAsAction="never"  
  8.         android:title="我是xml"/>  
  9.     <item  
  10.         android:id="@+id/context_item2"  
  11.         android:orderInCategory="100"  
  12.         android:showAsAction="never"  
  13.         android:title="我是xml2"/>  
  14.     <item  
  15.         android:id="@+id/context_item3"  
  16.         android:orderInCategory="100"  
  17.         android:showAsAction="never"  
  18.         android:title="我是xml3"/>  
  19.     <item  
  20.         android:id="@+id/context_item4"  
  21.         android:orderInCategory="100"  
  22.         android:showAsAction="never"  
  23.         android:title="我是xml4"/>  
  24.   
  25. menu> 

   5.3 业务实现

[java] view plain copy
  1. /** 
  2.      * 重新 onCreateContextMenu 添加菜单 
  3.      */  
  4.     @Override  
  5.     public void onCreateContextMenu(ContextMenu menu, View v,  
  6.             ContextMenuInfo menuInfo) {  
  7.         // 重写 ContextMenu 方法  
  8.         // 动态加载  
  9.         menu.add(111"干嘛");  
  10.         menu.add(121"哇哦");  
  11.         menu.add(131"咳咳");  
  12.         menu.add(141"哈哈");  
  13.           
  14.         //布局添加  
  15.         getMenuInflater().inflate(R.menu.context_menu, menu);  
  16.   
  17.         super.onCreateContextMenu(menu, v, menuInfo);  
  18.     }  
  19.       
  20.       
  21.     /** 
  22.      * 菜单 项点击事件 
  23.      */  
  24.     @Override  
  25.     public boolean onContextItemSelected(MenuItem item) {  
  26.         textView1.setText(item.getItemId()+" | "+item.getTitle());  
  27.         //判断 点击的id , 不同的操作使用 switch  
  28.         switch (item.getItemId()) {  
  29.         case 1:  
  30.             Toast.makeText(getApplicationContext(),"我就是要"+item.getTitle(),Toast.LENGTH_SHORT).show();  
  31.             break;  
  32.         case 2:  
  33.             Toast.makeText(getApplicationContext(),"你快看"+item.getTitle(),Toast.LENGTH_SHORT).show();  
  34.             break;  
  35.         case 3:  
  36.             Toast.makeText(getApplicationContext(),"老头子!"+item.getTitle(),Toast.LENGTH_SHORT).show();  
  37.             break;  
  38.         case 4:  
  39.             Toast.makeText(getApplicationContext(),"你是。。。!"+item.getTitle(),Toast.LENGTH_SHORT).show();  
  40.             break;  
  41.         case R.id.context_item1:  
  42.             Toast.makeText(getApplicationContext(),"context_item1",Toast.LENGTH_SHORT).show();  
  43.             break;  
  44.         case  R.id.context_item2:  
  45.             Toast.makeText(getApplicationContext(),"context_item2",Toast.LENGTH_SHORT).show();  
  46.             break;  
  47.         case  R.id.context_item3:  
  48.             Toast.makeText(getApplicationContext(),"context_item3",Toast.LENGTH_SHORT).show();  
  49.             break;  
  50.         case  R.id.context_item4:  
  51.             Toast.makeText(getApplicationContext(),"context_item4",Toast.LENGTH_SHORT).show();  
  52.             break;  
  53.           
  54.         }  
  55.         return super.onContextItemSelected(item);  
  56.     } 

6.demo 免积分下载

http://download.csdn.net/detail/lablenet/9050689

你可能感兴趣的:(Android)