android监听向上滑回主页,Android右滑返回的实现

原理

将activity的背景设置为透明同时设置切换动画

手指滑动的时候,根View跟着滑动,滑倒一定的距离就finish掉。

原理很简单,但实现起来可能有些坑。这里记录一下。源码参考

处理onInterceptTouchEvent

事件拦截要处理一件事情:确定这次触摸事件是不是应该交给SlideFinishLayout的onTouchEvent处理。

override fun onInterceptTouchEvent(ev: MotionEvent): Boolean {

val action = ev.action

when (action){

MotionEvent.ACTION_DOWN -> {

mLastX = ev.x.toInt()

mIsDrag = false

}

MotionEvent.ACTION_MOVE -> {

mScroller.computeScrollOffset()

mIsDrag = !mScroller.isFinished

val deltaY:Int = ev.x.toInt() - mLastX

if (deltaY >= mTouchSlop){

mIsDrag = true

}

}

}

return mIsDrag

}

onTouchEvent

这个是核心的实现方法.

这里会用到OverScroller的startScroll()方法来处理手指离开后的动画。OverScroller使用起来非常的简单,如果想让View滚动就调用startScroll()传入相应参数,会把计算的结果回调给View的computeScroll()方法,下面是主要的实现思路:

override fun onTouchEvent(event: MotionEvent): Boolean {

val action = event.action

//1.初始化轨迹

initVelocityTrackerIfNotExists(event)

when(action){

MotionEvent.ACTION_DOWN -> {

//2.down 事件 mScroller放弃动画 记录触摸的位置

if (!mScroller.isFinished

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值