Android开发经验谈Android 知识

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

2018-11-05  本文已影响18人  yuruiyin

前言

首先,我相信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的源码

题外话

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

上一篇下一篇

猜你喜欢

热点阅读