美文网首页Android知识梳理UIAndroid-recyclerview
Android RecycleView 只增加顶部透明渐变效果f

Android RecycleView 只增加顶部透明渐变效果f

作者: 南窗云 | 来源:发表于2021-03-02 12:18 被阅读0次

    问题

    UI要求给列表指定区域添加顶部透明渐变效果,效果如下图:


    效果图

    滑动的时候,顶部固定20dp的位置要透明渐变。

    增加顶部和底部透明渐变效果

    有API可以直接实现这种边缘衰弱效果(即透明渐变),代码如下:

        <!--  聊天列表  -->
        <com.riselinkedu.parent.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="256dp"
            android:layout_height="144dp"
            android:overScrollMode="never"
            android:fadingEdgeLength="20dp"
            android:requiresFadingEdge="vertical"
            android:background="@color/transparent"
            android:layout_marginStart="12dp"
            android:layout_marginBottom="50dp"
            app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            />
    

    关键代码:

            android:fadingEdgeLength="20dp"
            android:requiresFadingEdge="vertical"
    

    fadingEdgeLength 区域大小,requiresFadingEdge 渐变方向

    这样添加之后,会发现 顶部和底部 都有了透明渐变效果。

    只增加顶部透明渐变效果

    然而,UI只要顶部有透明渐变,底部不要。

    通过查源码发现两个方法如下:

        override fun getTopFadingEdgeStrength(): Float {
            return super.getTopFadingEdgeStrength()
        }
    
        override fun getBottomFadingEdgeStrength(): Float {
            return super.getBottomFadingEdgeStrength()
        }
    

    分别返回的是 fadingEdge 的顶部及底部的效果区域。

    此时,一个解决方案就有了,重写 getBottomFadingEdgeStrength 方法,返回值为0f

        override fun getBottomFadingEdgeStrength(): Float {
            return 0f
        }
    

    最终和预想的结果一样,底部效果区域返回为0f ,就去掉了透明渐变效果。

    相关文章

      网友评论

        本文标题:Android RecycleView 只增加顶部透明渐变效果f

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