onfling()的使用

package com.example.onflyingdemo;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
	GestureDetector gestureDetector = null;
	private Context ctx;
	private TextView tv;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		tv = (TextView) findViewById(R.id.tv);
		/**
		 * 检测用户手势的方向
		 */

		gestureDetector = new GestureDetector(MainActivity.this, new GestureDetector.SimpleOnGestureListener() {
			// 重写onFling方法
			@Override
			public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {

				if (velocityY > 0/* e1.getY()-e2.getY()>0 */) { // 向下

					Toast.makeText(MainActivity.this, "用户意图方向下 “y>0”", 0).show();
				}
				if (velocityY < 0) {// 向上

					Toast.makeText(MainActivity.this, "用户意图方向上“y<0”", 0).show();
				}
				if (velocityX > 0) {// 向右

					Toast.makeText(MainActivity.this, "用户意图方向右“x>0”", 0).show();
				}

				if (velocityX < 0) {// 向左

					Toast.makeText(MainActivity.this, "用户意图方向左“x<0”", 0).show();
				}

				return super.onFling(e1, e2, velocityX, velocityY);
			}

		});
	}

	@Override
	public boolean onTouchEvent(MotionEvent event) {
		// return super.onTouchEvent(event);

		return gestureDetector.onTouchEvent(event);
	}

}

上面的代码只是演示有很多问题  移动最小距离我们没有设定 当我用手指向下滑的时候,其实已经向左偏了 这个时候 向左的土司也会被打印出来的;更改为下面的代码:

public class CbMainActivity extends Activity implements  android.view.GestureDetector.OnGestureListener
{
    //定义手势检测器实例
    GestureDetector detector;
     
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.cb_main);
        //创建手势检测器
        detector = new GestureDetector(this,this); 
    }
 
    //将该activity上的触碰事件交给GestureDetector处理
    public boolean onTouchEvent(MotionEvent me){
        return detector.onTouchEvent(me);
    }
     
    @Override
    public boolean onDown(MotionEvent arg0) {
        return false;
    }
 
    /**
     * 滑屏监测
     * 
     */
    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
            float velocityY) {
        float minMove = 120;         //最小滑动距离
        float minVelocity = 0;      //最小滑动速度
        float beginX = e1.getX();     
        float endX = e2.getX();
        float beginY = e1.getY();     
        float endY = e2.getY();
         
        if(beginX-endX>minMove&&Math.abs(velocityX)>minVelocity){   //左滑
            Toast.makeText(this,velocityX+"左滑",Toast.LENGTH_SHORT).show();
        }else if(endX-beginX>minMove&&Math.abs(velocityX)>minVelocity){   //右滑
            Toast.makeText(this,velocityX+"右滑",Toast.LENGTH_SHORT).show();
        }else if(beginY-endY>minMove&&Math.abs(velocityY)>minVelocity){   //上滑
            Toast.makeText(this,velocityX+"上滑",Toast.LENGTH_SHORT).show();
        }else if(endY-beginY>minMove&&Math.abs(velocityY)>minVelocity){   //下滑
            Toast.makeText(this,velocityX+"下滑",Toast.LENGTH_SHORT).show();
        }
         
        return false;
    }
 
    @Override
    public void onShowPress(MotionEvent arg0) {
        // TODO Auto-generated method stub
         
    }
 
    @Override
    public boolean onSingleTapUp(MotionEvent arg0) {
        // TODO Auto-generated method stub
        return false;
    }
 
    @Override
    public void onLongPress(MotionEvent arg0) {
        // TODO Auto-generated method stub
         
    }
 
    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float velocityX,
            float velocityY) {
     
        return false;
    }
 
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值