美文网首页Android开发经验谈Android开发Android技术知识
Android 之路 (10) - 集成滑动返回(SwipeBa

Android 之路 (10) - 集成滑动返回(SwipeBa

作者: AndroidRookie | 来源:发表于2019-05-20 17:30 被阅读29次

    引言

    滑动返回不说是App的标配,但起码也是非常常见的功能了,本章主要讲解集成一个开源的滑动返回库:SwipeBackLayout。抱歉,本篇不是造轮子的文章。

    正文

    关于SwipeBackLayout的集成,我这里不打算使用依赖的方式集成,而是采用源码的方式进行集成,因为后续我还需要对Base进行扩展,需要修改一些源码。

    集成源码

    将源码下载下来,在core下面新建一个swipebacklayout包,将源码copy进去。

    image

    更改SwipeBackActivity

    SwipeBackActivity重写了findViewById()这个方法,在API-26中加入了泛型T extends View,所以需要更改一下源码,低于这个版本的API是不需要更改的。

     @Override
        public <T extends View> T findViewById(int id) {
            T v = super.findViewById(id);
            if (v == null && mHelper != null)
                return (T) mHelper.findViewById(id);
            return v;
        }
    
    //    @Override
    //    public View findViewById(int id) {
    //        View v = super.findViewById(id);
    //        if (v == null && mHelper != null)
    //            return mHelper.findViewById(id);
    //        return v;
    //    }
    

    初始化SwipeBackLayout

    将CandyBaseActivity更改为继承SwipeBackActivity,然后在onCreate()初始化滑动的模式。

    private void initSwipeActivity() {
            getSwipeBackLayout().setEdgeTrackingEnabled(SwipeBackLayout.EDGE_LEFT);
        }
    

    演示

    image

    其他问题

    禁用滑动返回

    某些页面是不需要滑动返回的,比如说主页面,这时候可以通过以下方法来禁用:

    getSwipeBackLayout().setEnableGesture(false);
    

    滑动时背景是黑色或者全透明

    在某些机型上面滑动的时候背景是纯黑色的,或者是全透明能看到桌面,这种情况可以通过设置不同的样式来解决:

    1.首先设置背景透明

    <item name="android:windowIsTranslucent">true</item>
    

    2.再给启动APP时的Activity单独设置不透明

     <style name="AppThemeMain" parent="AppTheme">
            <item name="android:windowIsTranslucent">false</item>
     </style>
    
    1. AndroidManifest.xml中单独设置不透明的背景风格
    <activity android:name=".main.activity.MainActivity"
                   android:theme="@style/AppThemeMain"
                   android:launchMode="singleTask">
            <intent-filter>
                    <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
    </activity>
    

    结束

    总结

    本文篇幅较少,只做了集成介绍和一个小问题的解决方案。
    源码-tag-v0.10

    遗留问题

    本篇中的侧滑返回并没有适配沉浸式,也就是我们的状态栏并没有和滑动返回同步。

    image

    所以下章将解决和适配这个问题

    微信公众号

    来都来了,就给个关注吧,时不时会悄悄的推送一些小技巧的文章~~


    AndroidRookie

    相关文章

      网友评论

        本文标题:Android 之路 (10) - 集成滑动返回(SwipeBa

        本文链接:https://www.haomeiwen.com/subject/gjclzqtx.html