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));


  • 相关阅读:
    多态问题----针对方法
    画了个Android——Canvas类的使用(转)
    设计模式之策略模式
    Listview多种布局的使用
    Activity的退出和進入效果
    java.lang.ClassNotFoundException
    台球小游戏
    线性表
    堆栈
    动态内存管理
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3199081.html
Copyright © 2011-2022 走看看