Add reveal view to overlay before creating animator
Bug: 17316066
- Additional checks introduced by ag/534856 now require that the target
of ViewAnimationUtils#createCircularReveal has a parent before being
invoked.
Change-Id: I21702486443e1c8fcae62d541e53a5237e50cfb4
diff --git a/src/com/android/calculator2/Calculator.java b/src/com/android/calculator2/Calculator.java
index dc606c9..5dd04bf 100644
--- a/src/com/android/calculator2/Calculator.java
+++ b/src/com/android/calculator2/Calculator.java
@@ -109,6 +109,7 @@
private CalculatorExpressionTokenizer mTokenizer;
private CalculatorExpressionEvaluator mEvaluator;
+ private View mDisplayView;
private CalculatorEditText mFormulaEditText;
private CalculatorEditText mResultEditText;
private ViewPager mPadViewPager;
@@ -124,6 +125,7 @@
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculator);
+ mDisplayView = findViewById(R.id.display);
mFormulaEditText = (CalculatorEditText) findViewById(R.id.formula);
mResultEditText = (CalculatorEditText) findViewById(R.id.result);
mPadViewPager = (ViewPager) findViewById(R.id.pad_pager);
@@ -314,11 +316,11 @@
}
private void reveal(View sourceView, int colorRes, AnimatorListener listener) {
- final View displayView = findViewById(R.id.display);
- final View decorView = getWindow().getDecorView();
+ final ViewGroupOverlay groupOverlay =
+ (ViewGroupOverlay) getWindow().getDecorView().getOverlay();
final Rect displayRect = new Rect();
- displayView.getGlobalVisibleRect(displayRect);
+ mDisplayView.getGlobalVisibleRect(displayRect);
// Make reveal cover the display and status bar.
final View revealView = new View(this);
@@ -326,6 +328,7 @@
revealView.setLeft(displayRect.left);
revealView.setRight(displayRect.right);
revealView.setBackgroundColor(getResources().getColor(colorRes));
+ groupOverlay.add(revealView);
final int[] clearLocation = new int[2];
sourceView.getLocationInWindow(clearLocation);
@@ -351,17 +354,11 @@
alphaAnimator.setDuration(
getResources().getInteger(android.R.integer.config_mediumAnimTime));
- final ViewGroupOverlay groupOverlay = (ViewGroupOverlay) decorView.getOverlay();
final AnimatorSet animatorSet = new AnimatorSet();
animatorSet.play(revealAnimator).before(alphaAnimator);
animatorSet.setInterpolator(new AccelerateDecelerateInterpolator());
animatorSet.addListener(new AnimatorListenerAdapter() {
@Override
- public void onAnimationStart(Animator animation) {
- groupOverlay.add(revealView);
- }
-
- @Override
public void onAnimationEnd(Animator animator) {
groupOverlay.remove(revealView);
mCurrentAnimator = null;