降低android Ontouchlistener的读取速度

时间:2014-03-23 10:31:39

标签: android touch delay

我正在使用从视图扩展的自定义视图尝试我的第一个游戏,因为它只是一个背景图像,可以通过拖动ACTION_Move进行平移。

它还有一个在画布上绘制的缩放图像,当在该区域上发生ACTION_UP时,会注册放大并放大图像。

我现在遇到的问题是虽然拖动效果很好,ontouch函数返回true,但ACTION_UP非常敏感,单次触摸执行ACTION_UP case语句中的代码几百次。而不是仅仅将缩放比例增加10%,它会迅速缩放到100%。

如果我对函数返回false,则每次触摸缩放通常会达到10%,但如前面的帖子中所述,该函数必须返回true才能让ACTION_MOVE响应。

我尝试过的事情

  1. Thread.sleep() - 它通过在两者间延迟缩放100次来完成同样的事情。
  2. 更改case语句中的返回值,使其仅对ACTION_MOVE返回true,但move不响应。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用布尔变量来控制缩放,例如:

private boolean zoom = true;
final Handler handler = new Handler();

// ACTION_UP
if(zoom) {
    doZoom();
    zoom = false;
}
handler.postDelayed(new Runnable() {
    @Override
    public void run() {
        zoom = true;
    }
}, 100); // Delay 100 ms, adjust for ideal zoom speed

现在它不会再缩放,直到100ms延迟完成。