zoukankan      html  css  js  c++  java
  • Android 输入法截取key优先于view

    为了验证编写了个例子

    首先是输入法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    public class RemoteKeyboard extends InputMethodService  {
     
      @Override public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (processKey(event, 0 != event.getRepeatCount()))
                return true;
            return super.onKeyDown(keyCode, event);
        }
     
        @Override public boolean onKeyUp(int keyCode, KeyEvent event) {
            if (processKey(event, true))
                return true;
            return super.onKeyUp(keyCode, event);
        }
     
        private boolean processKey(KeyEvent event, boolean doIt) {
             Log.e("======= " ," ============ processKey");
             return false;
        }
    }


    其次是app view

    1
    2
    3
    4
    5
    6
    7
    final TextView et1 = (TextView)findViewById(R.id.editText1);
    et1.setOnKeyListener(new OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event)
        {
            Log.e("====================","====OnKeyListener ");
        }


    运行程序打印

    ============================ : ============ processKey

    ==================== :====OnKeyListener

    ============================ : ============ processKey

    ==================== :====OnKeyListener

    第一遍应该是KeyDown, 第二遍应该是 KeyUp, 说明Android 输入法截取key优先于view

    又试验了一下改写system/usr/keychars/Generic.kcm

    把 B 改为

    key B {
    base: 'b' fallback DPAD_CENTER
    }

    在一个不可编辑框, log 如下

    12-23 05:18:09.093 118 118 E ============================ : ============ processKey

    12-23 05:18:09.094 118 118 E ============================ : ============ processKey
    12-23 05:18:09.163 118 118 E ============================ : ============ processKey
    12-23 05:18:09.163 118 118 E ============================ : ============ processKey

    说明b没有被 accept,而后又调用了 DPAD_CENTER

    在一个可编辑框,b被accept, log 如下

    ============================ : ============ processKey

    ============================ : ============ processKey

    说明没有调用 fallback

    如果改法如下

    key B {
    base: fallback DPAD_CENTER
    }

    在一个可编辑框也要打4行log, 说明 fallback被调用了

    结伴旅游,一个免费的交友网站:www.jieberu.com

    推推族,免费得门票,游景区:www.tuituizu.com

  • 相关阅读:
    Vue(小案例_vue+axios仿手机app)_go实现退回上一个路由
    nyoj 635 Oh, my goddess
    nyoj 587 blockhouses
    nyoj 483 Nightmare
    nyoj 592 spiral grid
    nyoj 927 The partial sum problem
    nyoj 523 亡命逃窜
    nyoj 929 密码宝盒
    nyoj 999 师傅又被妖怪抓走了
    nyoj 293 Sticks
  • 原文地址:https://www.cnblogs.com/rabbit-bunny/p/4192839.html
Copyright © 2011-2022 走看看