前几天用了个软件发现左滑可以返回首页,发现这个功能很炫酷,就想着自己能不能做出来,于是研究了一下
<强>原理强>
-
<李>将活动的背景设置为透明同时设置切换动画李>
<李>手指滑动的时候,根视图跟着滑动,滑倒一定的距离就完成掉。
李>
原理很简单,但实现起来可能有些坑。这里记录一下。源码参考
<强>处理onInterceptTouchEvent 强>
事件拦截要处理一件事情:确定这次触摸事件是不是应该交给SlideFinishLayout的onTouchEvent处理。
覆盖乐趣> 覆盖乐趣> & lt;样式名=" AppTheme。透明的“父=" Theme.AppCompat.Light.NoActionBar”比; & lt;项目名称=" android: windowBackground "祝辞@color/transparent & lt;项目名称=" android: windowIsTranslucent "祝辞true & lt;/style> >之前<强>设置活动进场和出场动画强>
R.anim。输入
& lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比; & lt;设置xmlns: android=" http://schemas.android.com/apk/res/android "比; & lt;翻译 android: fromXDelta=?00% p” android: toXDelta=" 0 " android:持续时间=" 200 " android:插入器=" @android:动画/accelerate_decelerate_interpolator”/比; & lt;/set> >之前R.anim。退出
& lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比; & lt;设置xmlns: android=" http://schemas.android.com/apk/res/android " android: shareInterpolator=" true " 比; & lt;翻译 android: fromXDelta=" 0 " android: toXDelta=?00% p” android:持续时间=" 200 " android:插入器=" @android:动画/accelerate_decelerate_interpolator”/比; & lt;/set> >之前活动代码如下
类TwoActivity: BaseActivity () { 覆盖有趣onCreate (savedInstanceState:包# 63;){ super.onCreate (savedInstanceState) setContentView (R.layout.activity_two) val指数=意图# 63;.getStringExtra(“指数”) nextBtn。setOnClickListener { startActivity(意图(this@TwoActivity TwoActivity:: class.java)) overridePendingTransition (R.anim。输入,0) }//滑动达到完成的监听事件,slideFinishLayout没有做任何处理如果这里不掉用完也不会退出活动 slideFinishLayout。finishListener={ 完成() overridePendingTransition (0, 0) } } 覆盖有趣完成(){ super.finish () R.anim.exit overridePendingTransition (0) } } >之前<强>存在的问题强>
堆栈之前的活动被意外销毁了,此时的当前的活动虽然为透明的,但是背景是黑色的,可能是因为被意外销毁还没有来的及调用onCreate,但是打开不保留活动来测试是没有问题的。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
Android左滑返回功能的实现示例代码