2012-03-25 29 views
2

我想在我的视图中对onTouchListener进行简单的方向识别,但event.getHistorySize()返回0或有时但很少是1或2.一般来说,没有历史记录,所以我可以不承认OnTouch历史记录大小始终为0

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

有没有人知道问题在哪里?

+0

将您需要的历史保存在某种队列中,您可以通过'onTouch'获取所需的所有历史记录。如果在此之前和之前的'onTouch'调用之间有多个触发事件,历史记录才会被填充。它并不打算包含所有的历史记录 – zapl 2012-03-25 18:24:56

+0

那么你不需要一个手势监听器吗?你需要自己处理这个历史,或者使用这样一个特殊的监听器。检查一些教程。 – Peterdk 2012-03-25 18:26:41

回答

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