美文网首页Android开发经验谈Android 知识
【绝对干货】完美解决AppBarLayout的滑动问题

【绝对干货】完美解决AppBarLayout的滑动问题

作者: yuruiyin | 来源:发表于2018-11-05 23:34 被阅读18次

    前言

    首先,我相信Android应用层开发的小伙伴们大部分都使用过AppBarLayout这个布局吧。对,就是大家所熟悉的经典的CoordinatorLayout + AppBarLayout + CollapsingToolbarLayout + TabLayout + NestedScrollView(不知道如何使用的可以参考这篇文章 https://www.jianshu.com/p/06c0ae8d9a96 )。也许大家都会认同以上布局组合在实际应用场景中非常好用,然而,AppBaryLayout其实还是存在着一些滑动问题的。

    问题描述

    1. 快速滑动AppBarLayout会出现回弹;
    2. 快速滑动AppBarLayout到折叠状态下,立马下拉会出现抖动现象;
    3. 滑动AppBarLayout过程中,无法像RecyclerView那样通过手指按下停止滚动。

    问题分析

    一切都是AppBarLayout的惯性滑动(fling)事件惹的祸。

    解决方案

    gradle

    Step 1. Add the JitPack repository in your root build.gradle at the end of repositories:

    allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }
    

    Step 2. Add the dependency in your app build.gradle:

    dependencies {
        implementation 'com.github.yuruiyin:AppbarLayoutBehavior:v1.0.1'
    }
    

    xml

    <android.support.design.widget.AppBarLayout
            android:id="@+id/appBarLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/white"
            android:fitsSystemWindows="false"
            app:layout_behavior="com.yuruiyin.appbarlayoutbehavior.AppBarLayoutBehavior"
            >
    
            ......
    
    </android.support.design.widget.AppBarLayout>
    

    来自( https://github.com/yuruiyin/AppbarLayoutBehavior ) 。
    其实就是从AppBarLayout的惯性滑动开刀,在合适的时机停止惯性滑动即可。对如何解决感兴趣的同学,可以直接查看源码研究,也希望有遇到什么问题的小伙伴可以提issue来互相探讨。

    总结

    本文虽然没有详细介绍问题的解决思路,但是我相信本文绝对干货,因为你用了上面所述的AppBarLayoutBehavior,就可以开开心心地使用几近完美的AppBarLayout了。难道这还不够吗? 对,当然不够,因为俗话说得好:我们不仅要知其然,还得知其所以然。所以呢,还是希望大家自行去研究一下我提交到github上面的AppbarLayoutBehavior的源码

    题外话

    如果觉得本文的内容有帮助到大家就给个赞呗~

    相关文章

      网友评论

      • zphaonu:您好,请问Android9不支持反射该怎么解决呢?

      本文标题:【绝对干货】完美解决AppBarLayout的滑动问题

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