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]
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
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 ,