Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6889
  • 博文数量: 10
  • 博客积分: 105
  • 博客等级: 民兵
  • 技术积分: 80
  • 用 户 组: 普通用户
  • 注册时间: 2013-01-09 23:01
文章分类

全部博文(10)

文章存档

2013年(10)

我的朋友

分类: 嵌入式

2013-01-11 19:57:27

v      Options menus

v      Sub menus  子菜单

v      Context menus

v      静态Xml菜单

 

menu实现的两种方法

       menu 的用法.

1. 简单的代码

1.    public static final int ITEM_1_ID = Menu.FIRST;

2.    public static final int ITEM_2_ID = Menu.FIRST + 1;

3.    public static final int ITEM_3_ID = Menu.FIRST + 2;

4.       

5.    public boolean onCreateOptionsMenu(Menu menu) {

6.            super.onCreateOptionsMenu(menu);

7.    //不带图标的menu

8.            menu.add(0, ITEM_1_ID, 0, "item-1");      

9.    //带图标的menu

10.           menu.add(0, ITEM_2_ID, 1, "item-2").setIcon(R.drawable.editbills2);

11.           menu.add(0, ITEM_3_ID, 2, "item-3").setIcon(R.drawable.billsum1);

 

子菜单:

// SubMenu subMenu = menu.addSubMenu(0, 4, 4, "省份");

    // subMenu.add(0, 1, 1, "江苏省");

    // subMenu.add(0, 2, 2, "上海市");

12.           return true;

13.   }

14.  

15.   public boolean onOptionsItemSelected(MenuItem item){

16.          switch (item.getItemId()) {

17.          case 1:

18.              Toast.makeText(this, "menu1",Toast.LENGTH_SHORT).show();           

19.              return true;

20.          case 2:

21.          

22.              return true;

23.          case 3:

24.           

25.              return true;

26.          }

27.          return false;

28.       }

 

 

第一种方法,通过Layout来添加静态菜单元素。
一般情况下,开发者在res/Layout路径下来定义应用程序的GUI。应用Eclipse创建一个新项目后,可以看到res/layout中存在一个 预置的main.xml文件,其作为程序默认启动界面。同样,可以通过这种方式 创建一个静态的Menu,创建方法参阅下边的源代码:
?View Code XML

version="1.0" encoding="utf-8"?>  
xmlns:android="">  
       
        android:id="@+id/previous"   
        android:title="@string/previous"   
        android:enabled="false"  
        android:icon="@android:drawable/ic_media_previous"/>  
          
       
        android:id="@+id/play_pause"   
        android:title="@string/play"   
        android:icon="@android:drawable/ic_media_play"/>  
       
        android:id="@+id/next"   
        android:title="@string/next"   
        android:icon="@android:drawable/ic_menu_next"/>  


Activity类中调用刚刚创建的Menu,首先将当前的Activity与指定的Menu XML相关联:
    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

        super.onCreateOptionsMenu(menu);

        getMenuInflater().inflate(R.layout.menu_mainactivity, menu);

        return true;

    }

实现onOptionsItemSelected方法: (其目的是捕捉到菜单触发事件后,对具体触发的选项作出响应,实际调用的函数包含在各自的case)
01.@Override
02.public boolean onOptionsItemSelected(MenuItem item) {
03.    switch (item.getItemId()) {
04.    case R.id.previous:
05.        previous(); //go to previous song in the playlist
06.        return true;
07.    case R.id.play_pause:
08.        isPlaying() ? pause() : play(); //toggle play/pause
09.        return true;
10.    case R.id.next:
11.        next(); //go to next song in the playlist
12.        return true;
13.    }
14.    return false; //should never happen
15.}


最后可以通过onPrepareOptionMenu方法初始化Menu Items的属性:
01.@Override
02.public boolean onPrepareOptionsMenu(Menu menu) {
03.    //set play_pause menu item look
04.    if(isPlaying()) {
05.        menu
06.            .findItem(R.id.play_pause)
07.            .setTitle(R.string.pause)
08.            .setIcon(android.R.drawable.ic_media_pause);
09.    } else {
10.        menu
11.            .findItem(R.id.play_pause)
12.            .setTitle(R.string.play)
13.            .setIcon(android.R.drawable.ic_media_play);
14.    }
15.    return true;
16.}


大部分程序都通过这种方式添加Menu菜单功能,而且通过以上的步骤来看,其实现方法非常简单。

————

public void onCreate(Bundle savedInstanceState)

    {

       super.onCreate(savedInstanceState);

       setContentView(R.layout.main);

     Button btn = (Button) findViewById(R.id.btn);

       registerForContextMenu(btn);// 注册contextmeun

    }

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo

     menuInfo)

     {

     menu.setHeaderTitle("");

     menu.add(0, 1, 1, "复制");

     menu.add(0, 2, 2, "剪切");

      

     super.onCreateContextMenu(menu, v, menuInfo);

     }

   

     @Override

     public boolean onContextItemSelected(MenuItem item)

     {

     Toast.makeText(this, item.getTitle(), Toast.LENGTH_SHORT).show();

     return true;

     }


这两种不同的方法实现的目的是一样的,而且不存在本质上的却别,具体根据实际情况(根据项目的结构需要或者团队开发标准)选择合适的方法来创建Menu

 

阅读(99) | 评论(0) | 转发(0) |
0

上一篇:国嵌linux 多进程编程

下一篇:共享内存

给主人留下些什么吧!~~