三句话实现:Activity 侧滑退出,不信你来看看?

版权声明:转载必须注明本文转自黄淑媛的博客: http://blog.csdn.net/imshuyuan https://blog.csdn.net/Imshuyuan/article/details/78365968

我的简书:三句话实现: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主题里面加一句话, true

赶快去试试吧,操作非常简单^_^

参考:

android Activity右滑返回,退出当前activity
[android]手把手通过一个类实现侧滑退出activity功能
Android版与微信Activity侧滑后退效果完全相同的SwipeBackLayout

猜你喜欢

转载自blog.csdn.net/Imshuyuan/article/details/78365968