GestureDetector和onTouchEvent判断手势方向(上下左右)

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;
    }
}
原文


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值