Merge "Set secondaryView to GONE when invisible" into rvc-dev am: 20309013ef

Change-Id: Iae3e80de905f69942cb02f0b5237236e1cf79316
This commit is contained in:
Evan Laird
2020-04-01 20:29:20 +00:00
committed by Automerger Merge Worker

View File

@@ -47,6 +47,18 @@ public abstract class StackScrollerDecorView extends ExpandableView {
} }
}; };
private boolean mSecondaryAnimating = false;
private final Runnable mSecondaryVisibilityEndRunnable = () -> {
mSecondaryAnimating = false;
// If we were on screen, become GONE to avoid touches
if (mSecondaryView == null) return;
if (getVisibility() != View.GONE
&& mSecondaryView.getVisibility() != View.GONE
&& !mIsSecondaryVisible) {
mSecondaryView.setVisibility(View.GONE);
}
};
public StackScrollerDecorView(Context context, AttributeSet attrs) { public StackScrollerDecorView(Context context, AttributeSet attrs) {
super(context, attrs); super(context, attrs);
setClipChildren(false); setClipChildren(false);
@@ -88,9 +100,11 @@ public abstract class StackScrollerDecorView extends ExpandableView {
private void setContentVisible(boolean contentVisible, boolean animate) { private void setContentVisible(boolean contentVisible, boolean animate) {
if (mContentVisible != contentVisible) { if (mContentVisible != contentVisible) {
mContentAnimating = animate; mContentAnimating = animate;
setViewVisible(mContent, contentVisible, animate, mContentVisibilityEndRunnable);
mContentVisible = contentVisible; mContentVisible = contentVisible;
} if (!mContentAnimating) { setViewVisible(mContent, contentVisible, animate, mContentVisibilityEndRunnable);
}
if (!mContentAnimating) {
mContentVisibilityEndRunnable.run(); mContentVisibilityEndRunnable.run();
} }
} }
@@ -136,8 +150,13 @@ public abstract class StackScrollerDecorView extends ExpandableView {
*/ */
public void setSecondaryVisible(boolean nowVisible, boolean animate) { public void setSecondaryVisible(boolean nowVisible, boolean animate) {
if (mIsSecondaryVisible != nowVisible) { if (mIsSecondaryVisible != nowVisible) {
setViewVisible(mSecondaryView, nowVisible, animate, null /* endRunnable */); mSecondaryAnimating = animate;
mIsSecondaryVisible = nowVisible; mIsSecondaryVisible = nowVisible;
setViewVisible(mSecondaryView, nowVisible, animate, mSecondaryVisibilityEndRunnable);
}
if (!mSecondaryAnimating) {
mSecondaryVisibilityEndRunnable.run();
} }
} }
@@ -170,6 +189,12 @@ public abstract class StackScrollerDecorView extends ExpandableView {
if (view == null) { if (view == null) {
return; return;
} }
// Make sure we're visible so animations work
if (view.getVisibility() != View.VISIBLE) {
view.setVisibility(View.VISIBLE);
}
// cancel any previous animations // cancel any previous animations
view.animate().cancel(); view.animate().cancel();
float endValue = nowVisible ? 1.0f : 0.0f; float endValue = nowVisible ? 1.0f : 0.0f;