아래 코드로 나를 도울 수 있습니까? 이 코드를 사용하여 화면에서 손가락을 스 와이프합니다.화면 스 와이프 감지 코드와 관련된 문제
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
public class ActivitySwipeDetector implements View.OnTouchListener {
private Activity activity;
static final int MIN_DISTANCE = 100;
private float downX, downY, upX, upY;
public ActivitySwipeDetector(final Activity activity) {
this.activity = activity;
}
public void onRightToLeftSwipe() {
}
public void onLeftToRightSwipe(){
}
public void onTopToBottomSwipe(){
}
public void onBottomToTopSwipe(){
}
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()){
case MotionEvent.ACTION_DOWN: {
Log.i("msg", "in MotionEvent.ACTION_DOWN "+event.getX());
downX = event.getX();
downY = event.getY();
}
case MotionEvent.ACTION_UP: {
Log.i("msg", "in MotionEvent.ACTION_UP "+event.getX());
upX = event.getX();
upY = event.getY();
float deltaX = downX - upX;
float deltaY = downY - upY;
// swipe horizontal?
if(Math.abs(deltaX) > MIN_DISTANCE){
// left or right
if(deltaX < 0) { this.onLeftToRightSwipe(); return true; }
if(deltaX > 0) { this.onRightToLeftSwipe(); return true; }
} else { Log.i("msg", "X-axis Swipe was only " + downX+"-"+upX + " long, need at least " +
MIN_DISTANCE); }
// swipe vertical?
if(Math.abs(deltaY) > MIN_DISTANCE){
// top or down
if(deltaY < 0) { this.onTopToBottomSwipe(); return true; }
if(deltaY > 0) { this.onBottomToTopSwipe(); return true; }
} else { Log.i("msg", "Y-axis Swipe was only " + downY+"-"+upY + " long, need at least " +
MIN_DISTANCE); }
// return true;
}
}
return false;
}
}
나는이 코드를 테스트 할 때 UPX 광고 downX 변수가 같은 값을 반환하는 모두 내가 (직접 전화하지 에뮬레이터에서) 내 코드
myTextView.setOnTouchListener(new ActivitySwipeDetector(this) {
public void onRightToLeftSwipe() {
//do some stuff;
}
public void onLeftToRightSwipe() {
//do some stuff;
}
public void onTopToBottomSwipe() {
//do some stuff;
}
public void onBottomToTopSwipe() {
//do some stuff;
}
});
을이 클래스를 사용하고 어떻게입니다 . upY 및 downY 값도 마찬가지입니다. 그리고 그러므로 onLeftToRightSwipe() 메소드는 처음에는 호출되지 않습니다.
하지만 터치 한 후 MotionEvent.ACTION_DOWN을 종료합니다. 따라서 실행은 사례 MotionEvent.ACTION_UP으로 이동하지 않습니다. upX에서 시작 위치를 포착하고 upX에서 닫는 위치를 캡처해야합니다. 휴식 시간을 가짐으로써 다운 X는 폴 루핑 (polupate)된다. – user1938357