Fade recents thumbnail to transparent earlier.
Reduce the gpu load by fading the recents thumbnail to an alpha of 0.0 before the remaining animations are completed. When alpha hits 0 the gpu treats the layer as hidden and can merge the remaining layers in time. This is a partial fix for 7729214. Change-Id: I9761bbd0554db6454c7eec0485be798b11672ff5
This commit is contained in:
@ -268,6 +268,9 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
/** Amount of time (in milliseconds) to delay before declaring a window freeze timeout. */
|
||||
static final int WINDOW_FREEZE_TIMEOUT_DURATION = 2000;
|
||||
|
||||
/** Fraction of animation at which the recents thumbnail becomes completely transparent */
|
||||
static final float RECENTS_THUMBNAIL_FADEOUT_FRACTION = 0.25f;
|
||||
|
||||
/**
|
||||
* If true, the window manager will do its own custom freezing and general
|
||||
* management of the screen during rotation.
|
||||
@ -3383,13 +3386,24 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
Animation scale = new ScaleAnimation(1, scaleW, 1, scaleH,
|
||||
computePivot(mNextAppTransitionStartX, 1 / scaleW),
|
||||
computePivot(mNextAppTransitionStartY, 1 / scaleH));
|
||||
AnimationSet set = new AnimationSet(true);
|
||||
AnimationSet set = new AnimationSet(false);
|
||||
Animation alpha = new AlphaAnimation(1, 0);
|
||||
scale.setDuration(duration);
|
||||
scale.setInterpolator(
|
||||
new DecelerateInterpolator(THUMBNAIL_ANIMATION_DECELERATE_FACTOR));
|
||||
scale.setInterpolator(AnimationUtils.loadInterpolator(mContext,
|
||||
com.android.internal.R.interpolator.decelerate_quad));
|
||||
set.addAnimation(scale);
|
||||
alpha.setDuration(duration);
|
||||
alpha.setInterpolator(new Interpolator() {
|
||||
@Override
|
||||
public float getInterpolation(float input) {
|
||||
if (input < RECENTS_THUMBNAIL_FADEOUT_FRACTION) {
|
||||
// linear response
|
||||
return input / RECENTS_THUMBNAIL_FADEOUT_FRACTION;
|
||||
}
|
||||
// complete
|
||||
return 1;
|
||||
}
|
||||
});
|
||||
set.addAnimation(alpha);
|
||||
set.setFillBefore(true);
|
||||
a = set;
|
||||
|
Reference in New Issue
Block a user