最近遇到需求,需要滑动退出Activity,参考了大虾们的方案后整理出了两种主流的方法:
- 使用OnTouchEvent,处理触摸事件实现滑动退出
- 使用ViewDragHelper拖动实现滑动退出
两种方法各有利弊,遇到界面上的滑动或滚动事件产生冲突的需要自己处理,下面就来详细的介绍两种实现方法。
0.前提
两种方法不管使用哪一种都需要设置透明主题及Activity中根布局的background,以实现滑动时,上一个Activity可见。
Activity根布局背景:
android:background="?android:colorBackground"
Activity主题:
<style name="Translucent" parent="AppTheme">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowAnimationStyle">@android:style/Animation</item>
</style>
1.使用OnTouchEvent,处理触摸事件实现滑动退出
先来看看具体实现:
/**
* @author Steven Duan
* @version 1.0
*/
public class SlideLayout extends FrameLayout {
private static final String T = SlideLayout.class.getName();
private Activity mActivity;
private Scroller mScroller;
private int mShadowWidth;
private Drawable mLeftShadow;
private int mLastMoveX;
private int mScreenWidth;
private int mMinX;
public SlideLayout(Activity activity) {
this(activity, null);
}
public SlideLayout(Activity activity, AttributeSet attrs) {
this(activity, attrs, 0);
}
public SlideLayout(Activity activity, AttributeSet attrs, int defStyleAttr) {
super(activity, attrs, defStyleAttr);
Log.d(T, "