zoukankan      html  css  js  c++  java
  • 虛擬鍵盤按下後藍色圖示無法消失

    这个问题我大致解释一下,PointerTracker.java中的setPressedKeyGraphics是控制按下键时变蓝色的函数,setReleasedKeyGraphics是控制从蓝色变回黑色的函数,分别在onDownEventInternal和onUpEventInternal中调用。

    当快速用鼠标点击虚拟键盘时,会发生变成蓝色没有变回来的情况,就是这两个函数没有匹配地调用导致的。

    为什么没有匹配呢?通过log分析来看,setPressedKeyGraphics的key值和setReleasedKeyGraphics的key值没有对应上。而出现这种情况是因为:

    在快速用鼠标点击虚拟键盘时,

    实际上会有先down的事件,然后move的事件,再up这样的事件发生。正常情况是接收到down事件就去调setPressedKeyGraphics使之变蓝,接收move的事件时处理move事件,会掉setReleasedKeyGraphics,因为你move走了,这个键也不应该显示蓝色了。然后移到另一个键时,你up了鼠标,所以会处理up事件,此时会判断是否到新的键了,如果是新的键,就会setReleasedKeyGraphics新的键。但是现在的情况是由于太快速地点击,中间的move事件没有处理,没有调用onMoveEven函数,所以旧的key没有处理到,直接去处理up事件时新的键了。

      所以就会出现快速点击时,虚拟键盘按下后蓝色图示无法消失的现象。解决的办法可以按照如下:

       在PointerTracker.java中的onUpEventInternal函数里面,在setReleasedKeyGraphics(keyIndex);前加一句:

    setReleasedKeyGraphics(getKeyIndexOn(mKeyX, mKeyY));


  • 相关阅读:
    recovery&linux系统升级数据更新分析总结
    recovery 强制执行恢复出厂设置(Rescue Party)
    recovery 恢复出厂设置失败Data wipe failed
    system.img镜像转换为system.new.dat + system.transfer.list
    system.transfer.list版本进化
    项目微管理2
    项目微管理1
    项目微管理0
    项目微管理
    《软件小设计》推出
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3199081.html
Copyright © 2011-2022 走看看