summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeorge Mount <mount@google.com>2014-09-17 15:28:06 -0700
committerGeorge Mount <mount@google.com>2014-09-17 15:41:18 -0700
commitdc5bf6a7f0e9d05a1019bb01b406ec1f54cdaa2b (patch)
treecf0bc111a7904702421b829c78dcd1946033cbec
parent61ee1eda0afb78c4ded09ac516f58283191e38df (diff)
downloadframeworks_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.java12
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