版权声明:转载必须注明本文转自黄淑媛的博客: http://blog.csdn.net/imshuyuan
我的简书:三句话实现:Activity 侧滑退出,不信你来看看?
现在很多应用都有左滑退出的功能,比如:微信
网上也好多例子,找到一种方法最小代价修改原来的代码,一般开发都会封装一个BaseActiviy 作为基类使用,
最简单的就是在上面改代价最小。
一种:自己写(想要研究原理 的可以去写写),
参考:
Activity右滑返回的实现
[android]手把手通过一个类实现侧滑退出activity功能
二种:找个库直接继承(当然采用这种啦,比较懒 ……)
GitHub:
https://github.com/ikew0ng/SwipeBackLayout
https://github.com/SilenceDut/NBAPlus
SwipeBackLayout 使用
添加依赖
compile ‘me.imid.swipebacklayout.lib:library:1.0.0’
基类继承:
一般Activity其他用法都正常使用就行,无需修改
public class BaseActivity extends SwipeBackActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
注意事项
这个一定要写在APP的 style主题中添加,原理左滑要看到上个页面,不设置透明无法实现
<!-- 解决activity切换时的黑屏问题 -->
<item name="android:windowIsTranslucent">true</item>
其他用法
1、如果想要某个Activity不需要这样的,可以有以下设置(比如MainActivity,你懂得)
//禁用滑动
setSwipeBackEnable(false);
2、如果Activity没有设置默认回退动画,(我的自己写过样式了,可以不用),添加如下:
/**
* 当按下返回键时
*/
@Override
public void onBackPressed() {
scrollToFinishActivity();//左滑退出activity
}
3、添加混淆(仅供参考)
#SwipeBackLayout
-dontwarn me.imid.swipebacklayout.lib.**
-keep class me.imid.swipebacklayout.lib.**{*;}
4、解决滑动返回上一个Activity出现桌面的bug单独为主界面Activity设置以下属性
(网上找的,不知道有没有用,不过我的程序没有这个bug,,仅供参考)
<item name="android:windowIsTranslucent">false</item>
5、方向设置
拿到 SwipeBackLayout,然后设置方向
mSwipeBackLayout = getSwipeBackLayout();
mSwipeBackLayout.setEdgeTrackingEnabled(SwipeBackLayout.EDGE_LEFT);
方向有四个选项:
SwipeBackLayout.EDGE_LEFT ---------------------------------------左边滑出
SwipeBackLayout.EDGE_RIGHT ------------------------------------- 右边滑出
SwipeBackLayout.EDGE_BOTTOM ----------------------------------底部滑出
SwipeBackLayout.EDGE_ALL ---------------------------------------- 上述都支持
6、当使用SwipeBackLayout 之后,Activity 生命周期会有影响
onRestart方法不会走
目前想到的解决办法是在 onRsume 中做判断,当第二次进入到该页面属于重启。从而实现重启的功能。(仅供参考)
属于笨方法。希望某位大神看看,能不能解决。
总结:三句话实现
第一,集成库compile ‘me.imid.swipebacklayout.lib:library:1.0.0’
第二,baseActivity 继承一个类……BaseActivity extends SwipeBackActivity
第三,style主题里面加一句话, <item name="android:windowIsTranslucent">true</item>
赶快去试试吧,操作非常简单_
参考:
android Activity右滑返回,退出当前activity
[android]手把手通过一个类实现侧滑退出activity功能
Android版与微信Activity侧滑后退效果完全相同的SwipeBackLayout