XCollapsingToolbarLayout.java
1.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package com.studymachine.www.widget;
import android.content.Context;
import android.util.AttributeSet;
import androidx.annotation.Nullable;
import com.google.android.material.appbar.CollapsingToolbarLayout;
/**
 *    
 *
 *    time   : 2018/10/18
 *    desc   : 支持监听渐变的 CollapsingToolbarLayout
 */
public final class XCollapsingToolbarLayout extends CollapsingToolbarLayout {
    /** 渐变监听 */
    @Nullable
    private OnScrimsListener mListener;
    /** 当前渐变状态 */
    private boolean mScrimsShown;
    public XCollapsingToolbarLayout(Context context) {
        super(context);
    }
    public XCollapsingToolbarLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    public XCollapsingToolbarLayout(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
    @Override
    public void setScrimsShown(boolean shown, boolean animate) {
        super.setScrimsShown(shown, true);
        // 判断渐变状态是否改变了
        if (mScrimsShown == shown) {
            return;
        }
        // 如果是就记录并且回调监听器
        mScrimsShown = shown;
        if (mListener == null) {
            return;
        }
        mListener.onScrimsStateChange(this, mScrimsShown);
    }
    /**
     * 获取当前的渐变状态
     */
    public boolean isScrimsShown() {
        return mScrimsShown;
    }
    /**
     * 设置CollapsingToolbarLayout渐变监听
     */
    public void setOnScrimsListener(@Nullable OnScrimsListener listener) {
        mListener = listener;
    }
    /**
     * CollapsingToolbarLayout渐变监听器
     */
    public interface OnScrimsListener {
        /**
         * 渐变状态变化
         *
         * @param shown         渐变开关
         */
        void onScrimsStateChange(XCollapsingToolbarLayout layout, boolean shown);
    }
}