六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 40|回复: 0

Menu 使用

[复制链接]

升级  17.33%

18

主题

18

主题

18

主题

秀才

Rank: 2

积分
76
 楼主| 发表于 2013-1-15 02:44:00 | 显示全部楼层 |阅读模式
Menu

[功能]
Menu 对手机界面友好来说 是不可缺少的
而且 不仅可以通过java来创建/使用 menu 还可以通过xml 来创建/使用


[原理]
1. android 自身提供了对 menu 的良好支持 但是需要注意一点:menu 是绑定在 Activity 的。
2. 我们要做的就是:填充下列函数的实现部分:
public boolean onCreateOptionsMenu(Menu menu)
public boolean onOptionsItemSelected(MenuItem item)
public boolean onPrepareOptionsMenu(Menu menu)

以上3个函数的用途 从函数名应该就能知道了 就不多说了 比较特殊的是 public boolean onPrepareOptionsMenu(Menu menu) 这个函数会在你每次点击MENU键时被调用 所以我们可以在这里根据一些状态的变化来实时更新 menu 的内容 比如标题或作用

比如:有一个播放的功能 要求有一个menu 用来 播放/暂停 功能 且要二者公用一个 menu 且该menu 的标题要实时改变 比如 如果此刻正在播放 要求其标题为"暂停" 反之为"播放" 那么应该如何实现呢? (设:该menu的id为: int play = Menu.FIRST +3 ).代码如下:
private static final int play = Menu.FIRST +3;MediaPlay mp = new MediaPlay();MenuItem item = menu.findItem(play );if(mp.isPlaying()){item.setTitle("stop");}else {item.setTitle("play");}


[代码]
1. menu @ java
import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.Menu;import android.view.MenuItem;public class MenuAdd1Usage extends Activity {    private static final int Menu1 = Menu.FIRST;    private static final int Menu2 = Menu.FIRST+1;    private static final int Menu3 = Menu.FIRST+2;    private static final int Menu4 = Menu.FIRST+3;    private static final int Menu5 = Menu.FIRST+4;    private static final int Menu6 = Menu.FIRST+5;    private static final int Menu7 = Menu.FIRST+7;        public int FLAG_STATUS = 0;/** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);    }            public boolean onCreateOptionsMenu(Menu menu) {    menu.add(0, Menu1, 0, "Menu-1").setIcon(R.drawable.se32);        menu.add(0, Menu2, 0, "Menu-2").setIcon(R.drawable.heart);        menu.add(0, Menu3, 0, "Menu-3");        menu.add(0, Menu4, 0, "Menu-4");        menu.add(0, Menu5, 0, "Menu-5");        menu.add(0, Menu6, 0, "Menu-6");        menu.add(0, Menu7, 0, "Menu-7");            return true;    }        public boolean onOptionsItemSelected(MenuItem item) {    switch (item.getItemId()) {     case Menu1:    //to fill action listened by MenuItem    break;    }    return false;     }        public boolean onPrepareOptionsMenu(Menu menu) {        Log.d("TAG","-------------------------");        MenuItem item = menu.findItem(Menu1);    item.setEnabled(false);        //to query menu    //MenuItem item = menu.findItem(MENU_QUIT);//item.setChecked(false);//item.setTitle("update");        /* to update menu    if(FLAG_STATUS == 0){    item.setTitle("QUIT-1");    FLAG_STATUS = 1;    }    else {    item.setTitle("QUIT-0");    FLAG_STATUS = 0;    } */            /* to add menu    if(FLAG_STATUS == 0){    menu.add(0, MENU_NEW_NEW, 0, "New NEW");    }    */        return true;    }    }

2. menu @ xml
public class MenuAdd2Usage extends Activity {public int FLAG_STATUS = 0;/** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);    }            public boolean onCreateOptionsMenu(Menu menu) {    super.onCreateOptionsMenu(menu);     getMenuInflater().inflate(R.layout.menu_item, menu);    return true;    }        public boolean onOptionsItemSelected(MenuItem item) {    switch (item.getItemId()) {     case R.id.Item_1:    Log.d("TAG","[Item_1]");    break;        case R.id.Item_2:    Log.d("TAG","[Item_2]");    break;    case R.id.Item_3:    Log.d("TAG","[Item_3]");    break;    }    return false;     }        public boolean onPrepareOptionsMenu(Menu menu) {    MenuItem item = menu.findItem(R.id.Item_2);    item.setEnabled(false);    /*    if(FLAG_STATUS == 0){    item.setTitle("QUIT-1");    FLAG_STATUS = 1;    }    else {    item.setTitle("QUIT-0");    FLAG_STATUS = 0;    }    */    return true;    }    }

menu_item.xml
<?xml version="1.0" encoding="utf-8"?>  <menu xmlns:android="http://schemas.android.com/apk/res/android">      <item           android:id="@+id/Item_1"           android:title="Item_1"   />      <item           android:id="@+id/Item_2"           android:title="Item_2"   />      <item           android:id="@+id/Item_3"           android:title="Item_3"         android:enabled="false"/>  </menu>


over!!!
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表