android 屏幕自动滚动效果,Android滑动屏幕效果

屏幕切换指的是在同一个Activity内屏幕见的切换。

通过GestureDetector、OnGestureListener实现滑屏事件

滑屏实现:

通过android.view.GestureDetector类可以检测各种手势事件,该类有两个回调接口分别用来通知具体的事件:

GestureDetector.OnDoubleTapListener:用来通知DoubleTap事件,类似于鼠标的双击事件,该接口有如下三个回调函数:

1. onDoubleTap(MotionEvent

e):通知DoubleTap手势,

2. onDoubleTapEvent(MotionEvent

e):通知DoubleTap手势中的事件,包含down、up和move事件(这里指的是在双击之间发生的事件,例如在同一个地方双击会产生DoubleTap手势,而在DoubleTap手势里面还会发生down和up事件,这两个事件由该函数通知);

3. onSingleTapConfirmed(MotionEvent

e):用来判定该次点击是SingleTap而不是DoubleTap,如果连续点击两次就是DoubleTap手势,如果只点击一次,系统等待一段时间后没有收到第二次点击则判定该次点击为SingleTap而不是DoubleTap,然后触发SingleTapConfirmed事件。

GestureDetector.OnGestureListener:用来通知普通的手势事件,该接口有如下六个回调函数:

1. onDown(MotionEvent

e):down事件;

2. onSingleTapUp(MotionEvent

e):一次点击up事件;

3. onShowPress(MotionEvent

e):down事件发生而move或则up还没发生前触发该事件;

4. onLongPress(MotionEvent

e):长按事件;

5. onFling(MotionEvent

e1, MotionEvent e2, float velocityX, float velocityY):滑动手势事件;

6. onScroll(MotionEvent

e1, MotionEvent e2, float distanceX, float

distanceY):在屏幕上拖动事件。

手势坐标介绍

本示例中,用到了OnGestureListener接口的onScroll()和OnFling()方法,涉及到了Android系统坐标及触摸MotionEvent

e1和e2、速度velocityX、velocityY等值

Android屏幕坐标系如下图(左)

a4c26d1e5885305701be709a3d33442f.png

(1)MotionEvent中

e1是手指第一次按上屏幕的起点,e2是抬起手指离开屏幕的终点,根据上图Android屏幕坐标系可知:

手指向右滑动,终点(e2)在起点(e1)的右侧,有e2.getX() -

e1.getX() 大于0

手指向左滑动,终点(e2)在起点(e1)的左侧,有e2.getX() - e1.getX() 小于0

手指向下滑动,终点(e2)在起点(e1)的下侧,有e2.getY() -

e1.getY() 大于0

手指向上滑动,终点(e2)在起点(e1)的上侧,有e2.getY() - e1.getY() 小于0

===========================================================

a4c26d1e5885305701be709a3d33442f.png

(2)onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float

distanceY)

distanceX,是前后两次call的X距离,不是e2与e1的水平距离

distanceX,是前后两次call的Y距离,不是e2与e1的垂直距离

具体数值的方向,请详见上图(中)

==================================================================

a4c26d1e5885305701be709a3d33442f.png

(3)onFling(MotionEvent e1, MotionEvent e2, float velocityX, float

velocityY)

velocityX,是X轴的每秒速度

velocityY,是Y轴的每秒速度

具体数值的方向,请详见上图(右)

仔细观察可以发现:velocityX、velocityY的方向与distanceX、distanceY方向正好相反

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值