• setDefaultKeyMode分析


    setDefaultKeyMode (int mode) 用来设置一个Activity的默认的按键模式,

    也就是指这种情况,当Activity中发生了一些按键事件,但是这些事件没有被任何控件Listen到时(截获时),

    系统应该如何处理这些按键事件。

    mode一共有5种:

    DEFAULT_KEYS_DISABLE 
    DEFAULT_KEYS_DIALER 
    DEFAULT_KEYS_SHORTCUT 
    DEFAULT_KEYS_SEARCH_LOCAL
    DEFAULT_KEYS_SEARCH_GLOBAL

    但是上述的默认键动作不支持中文。也就是说如果处于中文输入状态,那么按键都会被理解为试图输入中文,而当输入完成后产生的中文,也不会进行默认按键处理。

    所以在我下面的例子中,如果必要,我会呼出软键盘把输入模式改为英文。


    1:DEFAULT_KEYS_DISABLE

    直接丢弃,这种情况你把键盘按穿了也不会有系统理你


    2:DEFAULT_KEYS_DIALER

    当外部按键时,会跳转到拨号器

    简单示例——在HelloWorld类似的代码中设置setDefaultKeyMode(DEFAULT_KEYS_DIALER),然后按数字键盘

    View Code
    public class SetDefaultKeyModeActivity 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);
    }
    }

    3:DEFAULT_KEYS_SHORTCUT

    将键盘输入作为当前窗体上注册的快捷键,进行快捷键处理,

    举个例子,如果当前菜单项注册了快捷键,则可以在不呼出菜单的情况下,将键盘输入作为菜单快捷键处理

    关于此种情况的实现分析和验证例子请看我写的

    DEFAULT_KEYS_SHORTCUT 功能的验证及其源码实现分析

    地址是:http://blog.csdn.net/silenceburn/archive/2010/12/11/6069988.aspx


    4:DEFAULT_KEYS_SEARCH_LOCAL

    将键盘输入作为搜索内容,进行本地搜索,如果本地没有实现自定义搜索,则使用全局搜索

    为了验证这种设置,首先注意我们必须实现一个自定义搜索,关于如何实现自定义搜索,请看我写的

    android 自定义搜索的简单实现

    地址是:http://blog.csdn.net/silenceburn/archive/2010/12/13/6073581.aspx

    其次我们必须保证当前处于英文输入模式,可以通过呼出一个软键盘来改变当前输入模式。

    确保上述要求实现后,我们输入任意按键,会发现系统直接呼出我们自定义的搜索界面


    5:DEFAULT_KEYS_SEARCH_GLOBAL:

    将键盘输入作为搜索内容,进行全局搜索

    保证当前处于英文输入模式,可以通过呼出一个软键盘来改变当前输入模式。

    确保上述要求实现后,我们输入任意按键,会发现系统直接呼出系统的全局搜索界面(也就是google的web搜索)


    总结:

    Activity提供的默认按键功能其实非常强大,可以把默认按键传入拨号、传入搜索、作为菜单快捷键等等,

    在特定的应用场景下,会带来一些非常神奇和良好的用户感受。

    但是非常可惜的是,完全不支持中文,因此对于我们中国开发者来讲,其实用性几乎等于零了。

    所以导致其资料非常稀少,在我研究这功能的几天里,找遍全网都没找到什么相关的文章。

    不过了解其特殊的功能和用法,也许在一些特定的应用场景下,会带来意外的便利呢。

    (转自http://blog.csdn.net/silenceburn/article/details/6069645)

  • 相关阅读:
    题解:艾米利亚的魔法
    tarjan求割点
    集合删数
    小测题解
    [考试]20141028
    铺地毯
    [考试]20141027
    大家好
    【DM642学习笔记一】关于Can't Initialize Target CPU的一种解决方法 : Error 0x80000240
    iOS开发之获取系统相册ALAssetLibrary
  • 原文地址:https://www.cnblogs.com/mumue/p/2375696.html
Copyright © 2020-2023  润新知