Android知识梳理UIAndroid-recyclerview

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

2021-03-02  本文已影响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 ,就去掉了透明渐变效果。

上一篇下一篇

猜你喜欢

热点阅读