快速实现右滑退出
本人使用的是GitHub上的开源库 SwipeBack
开源库地址 https://github.com/ikew0ng/SwipeBackLayout
集成右滑退出效果首先需要将库引用到我们的项目中,这里通过gradle的方式导入
compile ‘me.imid.swipebacklayout.lib:library:1.1.0’
引入项目之后,我们让我们的基类继承 SwipeBackActivity,之后配置如下
public abstract class BaseActivity extends SwipeBackActivity {
/**
* 右滑退出
*/
private SwipeBackLayout mSwipeBackLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getResViewId());
//初始化右滑退出
initSwipeBack();
}
/**
* 初始化右滑退出
*/
private void initSwipeBack() {
// 可以调用该方法,设置是否允许滑动退出
setSwipeBackEnable(true);
mSwipeBackLayout = getSwipeBackLayout();
// 设置滑动方向,可设置EDGE_LEFT, EDGE_RIGHT, EDGE_ALL, EDGE_BOTTOM
mSwipeBackLayout.setEdgeTrackingEnabled(SwipeBackLayout.EDGE_LEFT);
// 滑动退出的效果只能从边界滑动才有效果,如果要扩大touch的范围,可以调用这个方法
// mSwipeBackLayout.setEdgeSize(200);
}
/**
* 关闭右滑退出
*/
protected void closeSwipeBack() {
setSwipeBackEnable(false);
}
}
现在只需在不需要使用右滑退出的activity(比如MainActivity)中调用 closeSwipeBack() 方法就可以随意使用啦,跑起来后我们发现滑动效果有了,但是上一层activity是黑色的,如下图
要解决这个问题,我们就需要设置背景透明,我们需要在 style文件中的AppTheme中加一条属性
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<!--加上这条属性,就能解决滑动关闭时,页面黑屏的问题 -->
<item name="android:windowIsTranslucent">true</item>
</style>
将这个Style在AndroidManifest里设置到 Application 中
<application
...
...
android:theme="@style/AppTheme">
到这里,就可以随意玩耍啦,去耍吧。
PS: 因windowIsTranslucent属性导致的debug,可以看我的另一篇博客:
https://blog.csdn.net/w13576267399/article/details/82416201