继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

拉丁的传说
关注TA
已关注
手记 448
粉丝 126
获赞 788

小淇哥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

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP