当前位置:操作系统 > 安卓/Android >>

Android中的常量 DEFAULT_KEYS_SHORTCUT

1.  关于 DEFAULT_KEYS_SHORTCUT  的 API文档介绍
Use with setDefaultKeyMode(int) to execute a menu shortcut in default key handling.

That is, the user does not need to hold down the menu key to execute menu shortcuts.

 

从字面上看,其含义是指,将默认的按键输入作为菜单快捷键进行处理。

也就是说,用户不需要按下menu按键,就可以处理菜单快捷键,听起来非常神奇,究竟是不是这样呢?

 

 


--------------------------------------------------------------------------------

2.编写示例程序
我们编写一个程序验证一下其功能,首先新建一个工程,并设置默认按键模式为 DEFAULT_KEYS_SHORTCUT

 

[java]
package com.silenceburn; 
 
import android.app.Activity; 
import android.os.Bundle; 
 
public class MenuShortCutTester extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
         
        setDefaultKeyMode(DEFAULT_KEYS_SHORTCUT); 
    } 

 

 

 

为默认的main.xml中的TextView增加一个id属性,之后我们会用菜单选项控制这行字的颜色

 

[xhtml] 
 
http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
    android:id="@+id/myText"  
    android:layout_width="fill_parent"  
    android:layout_height="wrap_content"  
    android:text="@string/hello" 
    /> 

 

 

 

 

使用findViewById获取上一步中定义了id的文本对象,将其引用保存在成员变量b中。

重写onPrepareOptionsMenu方法,增加我们自己的菜单项,并注册快捷键,同时增加菜单点击的响应事件。

 

[java] 
package com.silenceburn; 
 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.MenuItem.OnMenuItemClickListener; 
import android.widget.TextView; 
 
public class MenuShortCutTester extends Activity { 
    /** Called when the activity is first created. */ 
    TextView b; 
     
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
         
        b = (TextView) this.findViewById(R.id.myText); 
         
        setDefaultKeyMode(DEFAULT_KEYS_SHORTCUT); 
    } 
     
    @Override 
    public boolean onPrepareOptionsMenu(Menu menu) { 
        // TODO Auto-generated method stub 
        super.onPrepareOptionsMenu(menu); 
         
        menu.removeItem(0); 
        menu.removeItem(1); 
        menu.add( 0, 0, 0, "One").setShortcut('0', '0').setOnMenuItemClickListener(new OnMenuItemClickListener(){ 
 
            @Override 
            public boolean onMenuItemClick(MenuItem item) { 
                // TODO Auto-generated method stub 
                b.setBackgroundColor(android.graphics.Color.RED); 
                return true; 
            }}); 
        menu.add( 0, 1, 0, "Two").setShortcut('1', '1').setOnMenuItemClickListener(new OnMenuItemClickListener(){ 
 
            @Override 
            public boolean onMenuItemClick(MenuItem item) { 
                // TODO Auto-generated method stub 
                b.setBackgroundColor(android.graphics.Color.GREEN); 
                return true; 
            }});  
         
        return true; 
    } 

 

 

 

注意我们一共注册了两个菜单项,

一个叫“One”,点击时将文本对象 b 的背景颜色改为红色,同时定义其快捷键为0

一个叫“Two”,点击时将文本对象 b 的背景颜色改为绿色,同时定义其快捷键为1

 

至此示例程序完成。

 


--------------------------------------------------------------------------------

3.验证使用示例程序
启动AVD,运行上述程序,程序启动后,我们应当看到是黑底灰字,点击menu按钮,可以看到One和Two两个菜单选项。

如下图所示:

 

 

 

目前Menu是打开状态,

点击One ,将把“helloworld...”字样的背景色变为红色,

点击Two ,将把“helloworld...”字样的背景色变为红绿色。

或者我们点设置好的快捷键 0 和 1,发现可以直接调用菜单选项控制颜色变化。

 

到目前为止一切都很正常,不过,神奇的现在来了!

 

我们首先关闭菜单,

然后直接点键盘键"0“,看看会发生什么。再直接点键盘键"1" ,看看会发生什么。

哈哈,在没有激活菜单的情况下,菜单项快捷键被直接调用了!根本不需要打开菜单,就可以用激活菜单快捷键!

 

什么?有位同学说快捷键就应该是这样子把,那好,请你把 onCreate 里面的

补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,