DesignTime: Do not use animation in design time.
Animations are used in response to a nested scroll in an App Bar
to: turn off the FAB and make the scrim opaque such that a image
is invisible when the toolbar is collapsed.
In design time: do not use animations.
This will allow LayoutLib to render the controls correctly after
the toolbar is collapsed.
Change-Id: Id168ce24d4539a765ccbe09a11ffc96716f28ae6
diff --git a/design/src/android/support/design/widget/CollapsingToolbarLayout.java b/design/src/android/support/design/widget/CollapsingToolbarLayout.java
index 7c09925..71611e6 100644
--- a/design/src/android/support/design/widget/CollapsingToolbarLayout.java
+++ b/design/src/android/support/design/widget/CollapsingToolbarLayout.java
@@ -377,14 +377,22 @@
private void showScrim() {
if (!mScrimsAreShown) {
- animateScrim(255);
+ if (ViewCompat.isLaidOut(this) && !isInEditMode()) {
+ animateScrim(255);
+ } else {
+ setScrimAlpha(255);
+ }
mScrimsAreShown = true;
}
}
private void hideScrim() {
if (mScrimsAreShown) {
- animateScrim(0);
+ if (ViewCompat.isLaidOut(this) && !isInEditMode()) {
+ animateScrim(0);
+ } else {
+ setScrimAlpha(0);
+ }
mScrimsAreShown = false;
}
}
@@ -398,15 +406,7 @@
mScrimAnimator.setUpdateListener(new ValueAnimatorCompat.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimatorCompat animator) {
- final int newAlpha = animator.getAnimatedIntValue();
- if (newAlpha != mScrimAlpha) {
- final Drawable contentScrim = mContentScrim;
- if (contentScrim != null && mToolbar != null) {
- ViewCompat.postInvalidateOnAnimation(mToolbar);
- }
- mScrimAlpha = newAlpha;
- ViewCompat.postInvalidateOnAnimation(CollapsingToolbarLayout.this);
- }
+ setScrimAlpha(animator.getAnimatedIntValue());
}
});
} else if (mScrimAnimator.isRunning()) {
@@ -417,6 +417,17 @@
mScrimAnimator.start();
}
+ private void setScrimAlpha(int alpha) {
+ if (alpha != mScrimAlpha) {
+ final Drawable contentScrim = mContentScrim;
+ if (contentScrim != null && mToolbar != null) {
+ ViewCompat.postInvalidateOnAnimation(mToolbar);
+ }
+ mScrimAlpha = alpha;
+ ViewCompat.postInvalidateOnAnimation(CollapsingToolbarLayout.this);
+ }
+ }
+
/**
* Set the drawable to use for the content scrim from resources. Providing null will disable
* the scrim functionality.
diff --git a/design/src/android/support/design/widget/FloatingActionButton.java b/design/src/android/support/design/widget/FloatingActionButton.java
index 13262a2..42af049 100644
--- a/design/src/android/support/design/widget/FloatingActionButton.java
+++ b/design/src/android/support/design/widget/FloatingActionButton.java
@@ -247,7 +247,7 @@
if (getVisibility() != VISIBLE) {
return;
}
- if (ViewCompat.isLaidOut(this)) {
+ if (ViewCompat.isLaidOut(this) && !isInEditMode()) {
mImpl.hide();
} else {
setVisibility(GONE);