2012-03-25 7 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

+0

ジェスチャリスナーは必要ありませんか?この履歴を自分で処理するか、特別なリスナーを使用する必要があります。いくつかのチュートリアルを確認してください。 – Peterdk

答えて

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