VisibilityAwareImageButton 用法

VisibilityAwareImageButton Usage

我最近在使用 ImageButtons,我遇到了这种新型的 ImageButton 'VisibilityAwareImageButton'。如果有人能告诉我这个 ImageButton 的用法以及它与常规 ImageButton 有何不同,那将非常有帮助?提前致谢:)

这是 VisibilityAwareImageButton 的完整来源。

class VisibilityAwareImageButton extends ImageButton {

    private int mUserSetVisibility;

    public VisibilityAwareImageButton(Context context) {
        this(context, null);
    }

    public VisibilityAwareImageButton(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public VisibilityAwareImageButton(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        mUserSetVisibility = getVisibility();
    }

    @Override
    public void setVisibility(int visibility) {
        internalSetVisibility(visibility, true);
    }

    final void internalSetVisibility(int visibility, boolean fromUser) {
        super.setVisibility(visibility);
        if (fromUser) {
            mUserSetVisibility = visibility;
        }
    }

    final int getUserSetVisibility() {
        return mUserSetVisibility;
    }
}

它似乎与常规 ImageButton 几乎完全相同,只是它跟踪用户实际设置的最后可见性。我能找到的唯一用法是在 FloatingActionButton 来源中。它用于在执行自己的内部更改和动画时跟踪用户希望视图的可见性。即

if (child.getUserSetVisibility() != VISIBLE) {
    // The view isn't set to be visible so skip changing it's visibility
    return false;
}

它在设计支持库中并且具有包可见性,因此 Google 似乎打算在内部使用它(目前似乎仅用于 FAB 实现)。