【问题标题】:OnTouch history size always 0OnTouch 历史记录大小始终为 0
【发布时间】:2012-03-25 18:22:33
【问题描述】:

在我看来,我正在尝试在 onTouchListener 中进行简单的方向识别,但 event.getHistorySize() 返回 0,或者有时,但很少返回 1 或 2。一般来说,没有历史记录,所以我无法进行识别

    ll3.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View arg0, MotionEvent arg1) {
                if (arg1.getHistorySize() > 0) {
                    int prev = (int) arg1.getHistoricalY((arg1
                            .getHistorySize() - 1));
                    if (arg1.getY() > prev) { 

有人知道问题出在哪里吗?

【问题讨论】:

  • 将您需要的历史记录保存在某种队列中,您可以通过onTouch 获得您需要的所有历史记录。仅当在此和之前对 onTouch 的调用之间存在多个触摸事件时,才会填充历史记录。它并不打算包含所有历史
  • 那你不需要手势监听器吗?你需要自己处理这个历史,或者使用这样一个特殊的监听器。查看一些教程。

标签: android touch history


【解决方案1】:

除非您有充分的理由查看传感器输出的每个值,否则您可能会这样做。 (帧之间输出的值可能不太重要?)

ll3.setOnTouchListener(new OnTouchListener() {
    @Override
    int prevY=0;
    public boolean onTouch(View arg0, MotionEvent arg1) {
            if (arg1.getY() > prevY) { 
               // do stuff
            }
            prevY = arg1.getY();

【讨论】:

    猜你喜欢
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多