setDefaultKeyMode 用法介绍
2015-09-28 15:01
141 查看
setDefaultKeyMode (int mode) 用来设置一个Activity的默认的按键模式,
也就是指这种情况,当Activity中发生了一些按键事件,但是这些事件没有被任何控件Listen到时(截获时),
系统应该如何处理这些按键事件。
mode一共有五种
DEFAULT_KEYS_DISABLE
DEFAULT_KEYS_DIALER
DEFAULT_KEYS_SHORTCUT
DEFAULT_KEYS_SEARCH_LOCAL
DEFAULT_KEYS_SEARCH_GLOBAL
first of all,首先要告诉大家一个不幸的消息,上述的默认键动作完全不支持中文。
也就是说如果处于中文输入状态,那么按键都会被理解为试图输入中文,而当输入完成后产生的中文,也不会进行默认按键处理。
所以在我下面的例子中,如果必要,我会呼出软键盘把输入模式改为英文。
以下分别解释
DEFAULT_KEYS_DISABLE
直接丢弃,这种情况你把键盘按穿了也不会有系统理你
DEFAULT_KEYS_DIALER
将键盘事件传入拨号器进行处理,例如如下代码:
package com.silenceburn;
import android.app.Activity;
import android.os.Bundle;
public class DefaultKeyTester 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_DIALER);
}
}
复制代码
这就是一个最最简单的android工程默认的helloworld模板,
我们只增加了一句话:setDefaultKeyMode(DEFAULT_KEYS_DIALER);
启动这个程序,屏幕上只有一行helloworld,但是我们输入123456,看看会发生什么。
DEFAULT_KEYS_SHORTCUT:
将键盘输入作为当前窗体上注册的快捷键,进行快捷键处理,
举个例子,如果当前菜单项注册了快捷键,则可以在不呼出菜单的情况下,将键盘输入作为菜单快捷键处理
关于此种情况的实现分析和验证例子请看我写的
DEFAULT_KEYS_SHORTCUT 功能的验证 及其
bfcb
源码实现分析
地址是:http://blog.csdn.net/silenceburn/archive/2010/12/11/6069988.aspx
DEFAULT_KEYS_SEARCH_LOCAL:
将键盘输入作为搜索内容,进行本地搜索,如果本地没有实现自定义搜索,则使用全局搜索
为了验证这种设置,首先注意我们必须实现一个自定义搜索,关于如何实现自定义搜索,请看我写的
android 自定义搜索 的简单实现
地址是:http://blog.csdn.net/silenceburn/archive/2010/12/13/6073581.aspx
其次我们必须保证当前处于英文输入模式,可以通过呼出一个软键盘来改变当前输入模式。
确保上述要求实现后,我们输入任意按键,会发现系统直接呼出我们自定义的搜索界面,如下图所示:
注意这是一个我们自定义的搜索,标题被我改为了My Search (注意这里我没有添加自定义搜索建议栏)
DEFAULT_KEYS_SEARCH_GLOBAL:
将键盘输入作为搜索内容,进行全局搜索
保证当前处于英文输入模式,可以通过呼出一个软键盘来改变当前输入模式。
确保上述要求实现后,我们输入任意按键,会发现系统直接呼出系统的全局搜索界面(也就是google的web搜索),如下图所示:
注意已经没有了My Search字样,而且全局搜索是有搜索建议栏的。(当然自定义搜索也可以实现自定义搜索建议栏)
总结:
Activity提供的默认按键功能其实非常强大,可以把默认按键传入拨号、传入搜索、作为菜单快捷键等等,
在特定的应用场景下,会带来一些非常神奇和良好的用户感受。
但是非常可惜的是,完全不支持中文,因此对于我们中国开发者来讲,其实用性几乎等于零了。
所以导致其资料非常稀少,在我研究这功能的几天里,找遍全网都没找到什么相关的文章。
不过了解其特殊的功能和用法,也许在一些特定的应用场景下,会带来意外的便利呢。
也就是指这种情况,当Activity中发生了一些按键事件,但是这些事件没有被任何控件Listen到时(截获时),
系统应该如何处理这些按键事件。
mode一共有五种
DEFAULT_KEYS_DISABLE
DEFAULT_KEYS_DIALER
DEFAULT_KEYS_SHORTCUT
DEFAULT_KEYS_SEARCH_LOCAL
DEFAULT_KEYS_SEARCH_GLOBAL
first of all,首先要告诉大家一个不幸的消息,上述的默认键动作完全不支持中文。
也就是说如果处于中文输入状态,那么按键都会被理解为试图输入中文,而当输入完成后产生的中文,也不会进行默认按键处理。
所以在我下面的例子中,如果必要,我会呼出软键盘把输入模式改为英文。
以下分别解释
DEFAULT_KEYS_DISABLE
直接丢弃,这种情况你把键盘按穿了也不会有系统理你
DEFAULT_KEYS_DIALER
将键盘事件传入拨号器进行处理,例如如下代码:
package com.silenceburn;
import android.app.Activity;
import android.os.Bundle;
public class DefaultKeyTester 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_DIALER);
}
}
复制代码
这就是一个最最简单的android工程默认的helloworld模板,
我们只增加了一句话:setDefaultKeyMode(DEFAULT_KEYS_DIALER);
启动这个程序,屏幕上只有一行helloworld,但是我们输入123456,看看会发生什么。
DEFAULT_KEYS_SHORTCUT:
将键盘输入作为当前窗体上注册的快捷键,进行快捷键处理,
举个例子,如果当前菜单项注册了快捷键,则可以在不呼出菜单的情况下,将键盘输入作为菜单快捷键处理
关于此种情况的实现分析和验证例子请看我写的
DEFAULT_KEYS_SHORTCUT 功能的验证 及其
bfcb
源码实现分析
地址是:http://blog.csdn.net/silenceburn/archive/2010/12/11/6069988.aspx
DEFAULT_KEYS_SEARCH_LOCAL:
将键盘输入作为搜索内容,进行本地搜索,如果本地没有实现自定义搜索,则使用全局搜索
为了验证这种设置,首先注意我们必须实现一个自定义搜索,关于如何实现自定义搜索,请看我写的
android 自定义搜索 的简单实现
地址是:http://blog.csdn.net/silenceburn/archive/2010/12/13/6073581.aspx
其次我们必须保证当前处于英文输入模式,可以通过呼出一个软键盘来改变当前输入模式。
确保上述要求实现后,我们输入任意按键,会发现系统直接呼出我们自定义的搜索界面,如下图所示:
注意这是一个我们自定义的搜索,标题被我改为了My Search (注意这里我没有添加自定义搜索建议栏)
DEFAULT_KEYS_SEARCH_GLOBAL:
将键盘输入作为搜索内容,进行全局搜索
保证当前处于英文输入模式,可以通过呼出一个软键盘来改变当前输入模式。
确保上述要求实现后,我们输入任意按键,会发现系统直接呼出系统的全局搜索界面(也就是google的web搜索),如下图所示:
注意已经没有了My Search字样,而且全局搜索是有搜索建议栏的。(当然自定义搜索也可以实现自定义搜索建议栏)
总结:
Activity提供的默认按键功能其实非常强大,可以把默认按键传入拨号、传入搜索、作为菜单快捷键等等,
在特定的应用场景下,会带来一些非常神奇和良好的用户感受。
但是非常可惜的是,完全不支持中文,因此对于我们中国开发者来讲,其实用性几乎等于零了。
所以导致其资料非常稀少,在我研究这功能的几天里,找遍全网都没找到什么相关的文章。
不过了解其特殊的功能和用法,也许在一些特定的应用场景下,会带来意外的便利呢。
相关文章推荐
- 源码版本管理gitcafe(已经迁移到coding)
- 选择排序小程序(c语言)
- 多任务----同步
- Android第五十一期 - 即时通讯视频聊天
- Android第五十一期 - 即时通讯视频聊天
- iOS 数据的存储和读取之归档
- android中build过程
- NOIP2013华容道
- linux下替换一个文件中的所有中文字符的方法
- Struts2 四、Struts2 处理流程
- 整合Struts2和spring3的时候,sturts2配置文件没问题,能找到action,但页面空白
- 解析Java中未被捕获的异常以及try语句的嵌套使用
- Layout_weight这个属性
- 类中使用静态数据成员
- struts拦截器实现记录日志
- Struts2 四、Struts2 处理流程
- Android多媒体
- Win10系统安装完显卡驱动后蓝屏怎么办?Win10系统安装完显卡驱动后蓝屏的解决方法
- linux下tar命令
- iPhone 6s玫瑰金版怎么样