zoukankan      html  css  js  c++  java
  • 10.12 android输入系统_InputStage理论

    android应用程序对输入系统的处理分为多个阶段,我们把这些阶段称为InputStage

    理论处理流程:

    (1)activity发给window,如果window不能处理,再由activity处理;

    (2)window接受输入信息后,window发给decor,如果decor不能处理,再由window处理

    (3))decor接受输入信息后,decor发给输入焦点

    android源码对输入事件的处理与上面理论分析有点差别:

    (1)对输入法之前的处理

    ViewPreImeInputStage最终会调用输入焦点的onKeyPreIme,该函数直接返回false,如果应用程序需要在输入法之前处理按键类事件,需要重写该函数

    (2)对输入法之后的处理

    ViewPostIMEInputStage最终会调用到输入焦点的三个方法:使用setOnkeyListener注册的监听器的onkey函数、onkeyDown、onkeyUp

    或者调用activity的onkeyDown和onkeyUp(处理无人处理的key)

    因此我们可以设置监听器的onkey函数或者重写onkeyDown和onkeyUp来处理输入事件

    目的:
    a. 在输入法之前添加自己的处理函数(比如:点击textView输入字符,这里说的处理是在输入之前执行的函数)
    给某个控件重写onKeyPreIme
    b. 在输入法之后添加自己的处理函数
    b.1 在显示字符之前添加处理函数
    b.2 在显示字符之后添加处理函数

    给某个控件注册: setOnKeyListener(应该是在Activity类中为控件添加监听器,不应该在控件类中添加)
    或重写控件类的onKeyDown, onKeyUp函数

    c. 添加善后处理函数(如果所有的View控件无法处理按键, 由Activity来处理)
    重写Activity的onKeyDown, onKeyUp函数

  • 相关阅读:
    组合数计算--动态规划
    ListView 的position和id的区别
    android View 关于transient
    BlockingQueue深入分析
    栈的实现(JAVA)
    队列的实现(JAVA)
    《算法导论》读书笔记之第11章 散列表
    java 二叉搜索树
    桶排序
    排序算法的稳定性
  • 原文地址:https://www.cnblogs.com/liusiluandzhangkun/p/9173373.html
Copyright © 2011-2022 走看看