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

Change-Id: I3c3572035f0be926750807575a5a9bd6467ff332
This commit is contained in:
Evan Laird
2020-04-01 20:40:17 +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) {
super(context, attrs);
setClipChildren(false);
@@ -88,9 +100,11 @@ public abstract class StackScrollerDecorView extends ExpandableView {
private void setContentVisible(boolean contentVisible, boolean animate) {
if (mContentVisible != contentVisible) {
mContentAnimating = animate;
setViewVisible(mContent, contentVisible, animate, mContentVisibilityEndRunnable);
mContentVisible = contentVisible;
} if (!mContentAnimating) {
setViewVisible(mContent, contentVisible, animate, mContentVisibilityEndRunnable);
}
if (!mContentAnimating) {
mContentVisibilityEndRunnable.run();
}
}
@@ -136,8 +150,13 @@ public abstract class StackScrollerDecorView extends ExpandableView {
*/
public void setSecondaryVisible(boolean nowVisible, boolean animate) {
if (mIsSecondaryVisible != nowVisible) {
setViewVisible(mSecondaryView, nowVisible, animate, null /* endRunnable */);
mSecondaryAnimating = animate;
mIsSecondaryVisible = nowVisible;
setViewVisible(mSecondaryView, nowVisible, animate, mSecondaryVisibilityEndRunnable);
}
if (!mSecondaryAnimating) {
mSecondaryVisibilityEndRunnable.run();
}
}
@@ -170,6 +189,12 @@ public abstract class StackScrollerDecorView extends ExpandableView {
if (view == null) {
return;
}
// Make sure we're visible so animations work
if (view.getVisibility() != View.VISIBLE) {
view.setVisibility(View.VISIBLE);
}
// cancel any previous animations
view.animate().cancel();
float endValue = nowVisible ? 1.0f : 0.0f;