package com.example.kirito.myapplication;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.widget.Toast;
/**
* Created by kirito on 2016.10.16.
*/
public class TestGestureDetector extends AppCompatActivity {
private GestureDetector gd;
@Override
public boolean onTouchEvent(MotionEvent event) {
//给GestureDetector添加onTouchEvent
gd.onTouchEvent(event);
return super.onTouchEvent(event);
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
gd = new GestureDetector(this, new GestureDetector.OnGestureListener() {
@Override
public boolean onDown(MotionEvent e) {
return false;
}
@Override
public void onShowPress(MotionEvent e) {
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
return false;
}
@Override
public void onLongPress(MotionEvent e) {
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
String direction = detectDicr(e1.getX(),e1.getY(),e2.getX(),e2.getY()) + "";
Toast.makeText(getApplicationContext(),direction,Toast.LENGTH_SHORT).show();
return false;
}
});
setContentView(R.layout.testhandler);
}
//通过手势来移动方块:1,2,3,4对应上下左右
private int detectDicr(float start_x,float start_y,float end_x,float end_y){
boolean isLeftOrRight = Math.abs(start_x - end_x) > Math.abs(start_y - end_y) ? true : false;
if (isLeftOrRight){
if (start_x - end_x > 0){
return 3;
}else if (start_x - end_x < 0){
return 4;
}
}else {
if (start_y - end_y > 0){
return 1;
}else if (start_y - end_y < 0){
return 2;
}
}
return 0;
}
}
原文