simpleGestureDetector を使用して TextView でフリングを検出しようとしています:
public void onCreate(Bundle savedInstanceState) {
...
textContent.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent ev) {
return gestureDetector.onTouchEvent(ev);
}
});
}
class MyGestureDetector extends SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
if(foo) {
fooBar();
return true;
}
return super.onFling(e1, e2, velocityX, velocityY);
}
}
これは、条件が満たされた場合にコードfooBar()
が実行されるという意味で機能しfoo
ますが、問題は、条件が満たされない場合に super.onFling() を返すとフリングがキャンセルされることです。フリングで指を離した後、スクロールが継続しなくなりました。XML は次のとおりです。
<RelativeLayout
android:id="@+id/main_area"
android:layout_height="match_parent"
android:layout_width="match_parent">
<TextView
android:id="@+id/main_text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp"
android:textSize="16dp"
android:lineSpacingExtra="2dip"
/>
</RelativeLayout>
通常のスクロール動作を維持しながらフリングを検出する方法はありますか?
編集: 申し訳ありませんが、これはジェスチャ検出器とは何の関係もありませんでした。TextView を ScrollView から取り出したからです。何らかの理由で、TextView には ScrollView のようなスムーズな (慣性) スクロールがないようです。