Fix action mode animation on recreations - framework edition am: e65b3fbb63
am: b4acd653e6
* commit 'b4acd653e6f554d33b838b3dd1de643d7997956d':
Fix action mode animation on recreations - framework edition
Change-Id: I90681c1028df89dc10f7e79068b5936685bdf83c
This commit is contained in:
@@ -873,24 +873,40 @@ public class WindowDecorActionBar extends ActionBar implements
|
||||
hideForActionMode();
|
||||
}
|
||||
|
||||
Animator fadeIn, fadeOut;
|
||||
if (toActionMode) {
|
||||
fadeOut = mDecorToolbar.setupAnimatorToVisibility(View.GONE,
|
||||
FADE_OUT_DURATION_MS);
|
||||
fadeIn = mContextView.setupAnimatorToVisibility(View.VISIBLE,
|
||||
FADE_IN_DURATION_MS);
|
||||
if (shouldAnimateContextView()) {
|
||||
Animator fadeIn, fadeOut;
|
||||
if (toActionMode) {
|
||||
fadeOut = mDecorToolbar.setupAnimatorToVisibility(View.GONE,
|
||||
FADE_OUT_DURATION_MS);
|
||||
fadeIn = mContextView.setupAnimatorToVisibility(View.VISIBLE,
|
||||
FADE_IN_DURATION_MS);
|
||||
} else {
|
||||
fadeIn = mDecorToolbar.setupAnimatorToVisibility(View.VISIBLE,
|
||||
FADE_IN_DURATION_MS);
|
||||
fadeOut = mContextView.setupAnimatorToVisibility(View.GONE,
|
||||
FADE_OUT_DURATION_MS);
|
||||
}
|
||||
AnimatorSet set = new AnimatorSet();
|
||||
set.playSequentially(fadeOut, fadeIn);
|
||||
set.start();
|
||||
} else {
|
||||
fadeIn = mDecorToolbar.setupAnimatorToVisibility(View.VISIBLE,
|
||||
FADE_IN_DURATION_MS);
|
||||
fadeOut = mContextView.setupAnimatorToVisibility(View.GONE,
|
||||
FADE_OUT_DURATION_MS);
|
||||
if (toActionMode) {
|
||||
mDecorToolbar.setVisibility(View.GONE);
|
||||
mContextView.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
mDecorToolbar.setVisibility(View.VISIBLE);
|
||||
mContextView.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
AnimatorSet set = new AnimatorSet();
|
||||
set.playSequentially(fadeOut, fadeIn);
|
||||
set.start();
|
||||
// mTabScrollView's visibility is not affected by action mode.
|
||||
}
|
||||
|
||||
private boolean shouldAnimateContextView() {
|
||||
// We only to animate the action mode in if the container view has already been laid out.
|
||||
// If it hasn't been laid out, it hasn't been drawn to screen yet.
|
||||
return mContainerView.isLaidOut();
|
||||
}
|
||||
|
||||
public Context getThemedContext() {
|
||||
if (mThemedContext == null) {
|
||||
TypedValue outValue = new TypedValue();
|
||||
|
||||
@@ -32,6 +32,7 @@ import com.android.internal.widget.FloatingToolbar;
|
||||
import java.util.List;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.app.ActivityManager;
|
||||
import android.content.Context;
|
||||
@@ -1588,31 +1589,27 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
|
||||
mPrimaryActionModeView.getApplicationWindowToken(),
|
||||
Gravity.TOP | Gravity.FILL_HORIZONTAL, 0, 0);
|
||||
endOnGoingFadeAnimation();
|
||||
mFadeAnim = ObjectAnimator.ofFloat(mPrimaryActionModeView, View.ALPHA,
|
||||
0f, 1f);
|
||||
mFadeAnim.addListener(new Animator.AnimatorListener() {
|
||||
@Override
|
||||
public void onAnimationStart(Animator animation) {
|
||||
mPrimaryActionModeView.setVisibility(VISIBLE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
mPrimaryActionModeView.setAlpha(1f);
|
||||
mFadeAnim = null;
|
||||
}
|
||||
if (shouldAnimatePrimaryActionModeView()) {
|
||||
mFadeAnim = ObjectAnimator.ofFloat(mPrimaryActionModeView, View.ALPHA,
|
||||
0f, 1f);
|
||||
mFadeAnim.addListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationStart(Animator animation) {
|
||||
mPrimaryActionModeView.setVisibility(VISIBLE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAnimationCancel(Animator animation) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAnimationRepeat(Animator animation) {
|
||||
|
||||
}
|
||||
});
|
||||
mFadeAnim.start();
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
mPrimaryActionModeView.setAlpha(1f);
|
||||
mFadeAnim = null;
|
||||
}
|
||||
});
|
||||
mFadeAnim.start();
|
||||
} else {
|
||||
mPrimaryActionModeView.setAlpha(1f);
|
||||
mPrimaryActionModeView.setVisibility(VISIBLE);
|
||||
}
|
||||
}
|
||||
};
|
||||
} else {
|
||||
@@ -1646,35 +1643,36 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
|
||||
if (mPrimaryActionModePopup != null) {
|
||||
post(mShowPrimaryActionModePopup);
|
||||
} else {
|
||||
mFadeAnim = ObjectAnimator.ofFloat(mPrimaryActionModeView, View.ALPHA, 0f, 1f);
|
||||
mFadeAnim.addListener(new Animator.AnimatorListener() {
|
||||
@Override
|
||||
public void onAnimationStart(Animator animation) {
|
||||
mPrimaryActionModeView.setVisibility(View.VISIBLE);
|
||||
}
|
||||
if (shouldAnimatePrimaryActionModeView()) {
|
||||
mFadeAnim = ObjectAnimator.ofFloat(mPrimaryActionModeView, View.ALPHA, 0f, 1f);
|
||||
mFadeAnim.addListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationStart(Animator animation) {
|
||||
mPrimaryActionModeView.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
mPrimaryActionModeView.setAlpha(1f);
|
||||
mFadeAnim = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAnimationCancel(Animator animation) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAnimationRepeat(Animator animation) {
|
||||
|
||||
}
|
||||
});
|
||||
mFadeAnim.start();
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
mPrimaryActionModeView.setAlpha(1f);
|
||||
mFadeAnim = null;
|
||||
}
|
||||
});
|
||||
mFadeAnim.start();
|
||||
} else {
|
||||
mPrimaryActionModeView.setAlpha(1f);
|
||||
mPrimaryActionModeView.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
mPrimaryActionModeView.sendAccessibilityEvent(
|
||||
AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
|
||||
}
|
||||
|
||||
boolean shouldAnimatePrimaryActionModeView() {
|
||||
// We only to animate the action mode in if the decor has already been laid out.
|
||||
// If it hasn't been laid out, it hasn't been drawn to screen yet.
|
||||
return isLaidOut();
|
||||
}
|
||||
|
||||
private ActionMode createFloatingActionMode(
|
||||
View originatingView, ActionMode.Callback2 callback) {
|
||||
if (mFloatingActionMode != null) {
|
||||
|
||||
Reference in New Issue
Block a user