フリングのアクションに別のイメージを表示しようとしています。このために、SimpleOnGestureListener を使用しました。しかし、フリングは機能していません。原因を特定するのを手伝ってもらえますか。ここにコードがあります
public class MainActivity extends Activity{
ImageView m_imageView;
GestureDetector m_gdt;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.v("INFO", "Inside oncreate");
m_gdt = new GestureDetector(this, new GestureListener());
m_imageView = (ImageView)findViewById(R.id.imageView1);
m_imageView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(final View view, final MotionEvent event) {
Log.v("INFO", "Inside onTouch");
return m_gdt.onTouchEvent(event);
}
});
}
}
public class GestureListener extends SimpleOnGestureListener{
private final int SWIPE_MIN_DISTANCE = 120;
private final int SWIPE_THRESHOLD_VELOCITY = 200;
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
Log.v("INFO", "Fling detected");
if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
// Right to left, your code here
Log.v("INFO", "Image moving forward");
return true;
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
// Left to right, your code here
Log.v("INFO", "Image moving backward");
return true;
}
return false;
}
}
ログ メッセージ「Inside onTouch」が表示されます。しかし、メソッド onFling が呼び出されることはありません。ここで何が欠けていますか?