0

我没有选择,也许有人知道更好。我的问题是我有一个 ScrollView (descentand) 并在其中插入一个 View (descendant)。一切都很好,除非我想向上滚动(视图向上,手指向下)直到到达滚动区域的原点,在那之后我可以看到 MYView.onDraw() 大约每 130 毫秒调用一次,这会永远持续下去。

我发现这种奇怪的行为是由这段代码引起的:

myScrollView.setOnTouchListener(new OnTouchListener() {
    public boolean onTouch(View v, MotionEvent event) {
        Log.d("myapp", "onTouch");
        if (event.getAction() == MotionEvent.ACTION_UP 
            || event.getAction() == MotionEvent.ACTION_CANCEL) return true;
        return false;
    }

});

如果我注释掉if声明,问题就解决了。我什至不确定这行代码是做什么的。它认为它应该禁用“减速”动量效应。(因为我的应用程序不需要它)。我想我从某人的样本中复制粘贴了这段代码,几个月前在这里。

所以问题是如何去掉“onDraws 的永恒循环”,仍然保留“无减速效果”的代码。

4

1 回答 1

0

返回的布尔值的含义记录为:

如果侦听器已经消费了事件,则为 true,否则为 false。

真的不解释。“已消费”意味着其他侦听器不需要看到该事件。“未消费”意味着监听器可能看不到后续的相关事件。

我不清楚代码的目的是什么——它肯定只消耗两种类型的事件。但是您可以添加event.getAction()到日志中,看看发生了什么。我记得,不同版本的 Android 可能会为同一个手势生成一些不同的事件序列。

于 2013-06-10T06:35:37.393 回答