diff options
author | George Mount <mount@google.com> | 2014-09-17 15:28:06 -0700 |
---|---|---|
committer | George Mount <mount@google.com> | 2014-09-17 15:41:18 -0700 |
commit | dc5bf6a7f0e9d05a1019bb01b406ec1f54cdaa2b (patch) | |
tree | cf0bc111a7904702421b829c78dcd1946033cbec | |
parent | 61ee1eda0afb78c4ded09ac516f58283191e38df (diff) | |
download | frameworks_base-dc5bf6a7f0e9d05a1019bb01b406ec1f54cdaa2b.zip frameworks_base-dc5bf6a7f0e9d05a1019bb01b406ec1f54cdaa2b.tar.gz frameworks_base-dc5bf6a7f0e9d05a1019bb01b406ec1f54cdaa2b.tar.bz2 |
Default to using hardware layer during fade transition.
Bug 17499864
When hasOverlappingRendering() is true, a layer is used to
to fade views because performance can be much worse then.
When hasOverlappingRendering() is false, the performance
is not hurt and a layer is not used.
Change-Id: If3fb1c23ffc8d0bef85c9d16df6c26ff4bbd49ac
-rw-r--r-- | core/java/android/transition/Fade.java | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/core/java/android/transition/Fade.java b/core/java/android/transition/Fade.java index 1f9d093..e7857c0 100644 --- a/core/java/android/transition/Fade.java +++ b/core/java/android/transition/Fade.java @@ -145,12 +145,21 @@ public class Fade extends Visibility { private final View mView; private boolean mCanceled = false; private float mPausedAlpha = -1; + private boolean mLayerTypeChanged = false; public FadeAnimatorListener(View view) { mView = view; } @Override + public void onAnimationStart(Animator animator) { + if (mView.hasOverlappingRendering() && mView.getLayerType() == View.LAYER_TYPE_NONE) { + mLayerTypeChanged = true; + mView.setLayerType(View.LAYER_TYPE_HARDWARE, null); + } + } + + @Override public void onAnimationCancel(Animator animator) { mCanceled = true; if (mPausedAlpha >= 0) { @@ -163,6 +172,9 @@ public class Fade extends Visibility { if (!mCanceled) { mView.setTransitionAlpha(1); } + if (mLayerTypeChanged) { + mView.setLayerType(View.LAYER_TYPE_NONE, null); + } } @Override |