为了账号安全,请及时绑定邮箱和手机立即绑定

小淇哥基础教学(三)---GestrueListener手势监听

标签:
Android

小淇哥QQ:91630844(如果想要demo,可以加我QQ,下载地址:http://git.oschina.net/wsxqg/shijiandemo/attach_files) 

1创建一个private GestureDetector detector;activity会实现 OnGestureListener,OnTouchListener, OnDoubleTapListener接口,一个是手势事件,一个是双击事件,一个是触摸事件


可以配合iv.setOnTouchListener(this);触摸事件进行


@Override

public boolean onTouch(View v, MotionEvent event) {

// TODO Auto-generated method stub

return this.detector.onTouchEvent(event);


}

进行链接

//刚刚手指接触到触摸屏的那一刹那,由1个MotionEvent ACTION_DOWN触发 

@Override

public boolean onDown(MotionEvent e) {

// TODO Auto-generated method stub

Log.i(TAG, "onDown   y=" + e.getY());  

return true;

}


这个可以理解为长按之前


// 手指按在触摸屏上,它的时间范围在按下起效,在长按之前,

//由一个1个MotionEvent ACTION_DOWN触发  

//注意和onDown()的区别,强调的是没有松开或者拖动的状态  

@Override

public void onShowPress(MotionEvent e) {

// TODO Auto-generated method stub

Log.i(TAG, "onShowPress");

}


//手指离开触摸屏的那一刹那

//,由一个1个MotionEvent ACTION_UP触发  

@Override

public boolean onSingleTapUp(MotionEvent e) {

// TODO Auto-generated method stub

Log.i(TAG, "onSingleTapUp    y=" + e.getY());

return true;

}


//手指按下且在屏上滑动

//由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE触发

@Override

public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {

// TODO Auto-generated method stub

Log.i(TAG, "onScroll:distanceX = " + distanceX + " distanceY = " + distanceY);

return true;

}


//手指在触摸屏上迅速移动,并松开的动作

//由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE, 1个ACTION_UP触发 

//e1:第1个ACTION_DOWN MotionEvent ,e2:最后一个ACTION_MOVE MotionEven

//velocityX:X轴上的移动速度,像素/秒  ,velocityY:Y轴上的移动速度,像素/秒   


@Override

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {

// TODO Auto-generated method stub

Log.i(TAG, "onFling");

if(e1.getX()-e2.getX()>100&&Math.abs(velocityX)>200){

Log.i(TAG, "onFling   向左滑动");

return true;

}else if(e1.getX()-e2.getX()<-100&&Math.abs(velocityX)>200){

Log.i(TAG, "onFling   向右滑动");

return true;

}else if(e1.getY()-e2.getY()>10&&Math.abs(velocityY)>50){

Log.i(TAG, "onFling   向上滑动  上位移="+(e1.getY()-e2.getY()));

return true;

}else if(e1.getY()-e2.getY()<-10&&Math.abs(velocityY)>50){

Log.i(TAG, "onFling   向下滑动    下位移"+(e1.getY()-e2.getY()));

return true;

}

return false;

}


下面这两个是双击事件的

@Override

public boolean onDoubleTap(MotionEvent e) {

Log.i(TAG, "onDoubleTap");

return false;

}


@Override

public boolean onDoubleTapEvent(MotionEvent e) {

Log.i(TAG, "onDoubleTapEvent");

return false;

}

原文链接:http://www.apkbus.com/blog-880881-68578.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消