6
안녕하세요 SimpleOnGestureListener가 내 응용 프로그램에서 작동하지 않습니다. 어떻게 구현하나요? 어쩌면 무엇이 잘못되었는지 확인할 수 있습니다. 것은 응용 프로그램이 onFling (...) methode 및 gdt.onTouchEvent (event)로 절대 들어 가지 않는다는 것을 보여주는 디버깅입니다. 항상 false를 반환합니다./ 모든 아이디어 ?? 감사합니다SimpleOnGestureListener가 onFling (...) 메서드로 절대 들어 가지 않음
내 활동 클래스
public class SimpleActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.simpleLayout);
final ImageView imageView = (ImageView) findViewById(R.id.gggbbb);
imageView.setOnTouchListener(new OnFlingGestureListener() {
@Override
public void onTopToBottom() {
System.out.println("top");
}
@Override
public void onRightToLeft() {
System.out.println("right");
}
@Override
public void onLeftToRight() {
System.out.println("left");
}
@Override
public void onBottomToTop() {
System.out.println("bottom");
}
});
}
}
내 추상적 인 리스너
package com.dmd.client.detailsMenus;
import android.view.GestureDetector;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
public abstract class OnFlingGestureListener implements OnTouchListener {
private final GestureDetector gdt = new GestureDetector(new GestureListener());
@Override
public boolean onTouch(final View v, final MotionEvent event) {
return gdt.onTouchEvent(event);
}
private final class GestureListener extends SimpleOnGestureListener {
private static final int SWIPE_MIN_DISTANCE = 60;
private static final int SWIPE_THRESHOLD_VELOCITY = 100;
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
onRightToLeft();
return true;
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
onLeftToRight();
return true;
}
if(e1.getY() - e2.getY() > SWIPE_MIN_DISTANCE && Math.abs(velocityY) > SWIPE_THRESHOLD_VELOCITY) {
onBottomToTop();
return true;
} else if (e2.getY() - e1.getY() > SWIPE_MIN_DISTANCE && Math.abs(velocityY) > SWIPE_THRESHOLD_VELOCITY) {
onTopToBottom();
return true;
}
return false;
}
}
public abstract void onRightToLeft();
public abstract void onLeftToRight();
public abstract void onBottomToTop();
public abstract void onTopToBottom();
}
작동합니다! 감사 –