Merge "Disable RT animations for header ripple" into mnc-dr-dev
This commit is contained in:
@ -48,8 +48,8 @@ class RippleBackground extends RippleComponent {
|
||||
// Software rendering properties.
|
||||
private float mOpacity = 0;
|
||||
|
||||
public RippleBackground(RippleDrawable owner, Rect bounds) {
|
||||
super(owner, bounds);
|
||||
public RippleBackground(RippleDrawable owner, Rect bounds, boolean forceSoftware) {
|
||||
super(owner, bounds, forceSoftware);
|
||||
}
|
||||
|
||||
public boolean isVisible() {
|
||||
|
@ -52,9 +52,16 @@ abstract class RippleComponent {
|
||||
/** Screen density used to adjust pixel-based constants. */
|
||||
protected float mDensity;
|
||||
|
||||
public RippleComponent(RippleDrawable owner, Rect bounds) {
|
||||
/**
|
||||
* If set, force all ripple animations to not run on RenderThread, even if it would be
|
||||
* available.
|
||||
*/
|
||||
private final boolean mForceSoftware;
|
||||
|
||||
public RippleComponent(RippleDrawable owner, Rect bounds, boolean forceSoftware) {
|
||||
mOwner = owner;
|
||||
mBounds = bounds;
|
||||
mForceSoftware = forceSoftware;
|
||||
}
|
||||
|
||||
public void onBoundsChange() {
|
||||
@ -143,7 +150,7 @@ abstract class RippleComponent {
|
||||
* @return {@code true} if something was drawn, {@code false} otherwise
|
||||
*/
|
||||
public boolean draw(Canvas c, Paint p) {
|
||||
final boolean hasDisplayListCanvas = c.isHardwareAccelerated()
|
||||
final boolean hasDisplayListCanvas = !mForceSoftware && c.isHardwareAccelerated()
|
||||
&& c instanceof DisplayListCanvas;
|
||||
if (mHasDisplayListCanvas != hasDisplayListCanvas) {
|
||||
mHasDisplayListCanvas = hasDisplayListCanvas;
|
||||
|
@ -165,6 +165,12 @@ public class RippleDrawable extends LayerDrawable {
|
||||
/** Whether bounds are being overridden. */
|
||||
private boolean mOverrideBounds;
|
||||
|
||||
/**
|
||||
* If set, force all ripple animations to not run on RenderThread, even if it would be
|
||||
* available.
|
||||
*/
|
||||
private boolean mForceSoftware;
|
||||
|
||||
/**
|
||||
* Constructor used for drawable inflation.
|
||||
*/
|
||||
@ -546,7 +552,7 @@ public class RippleDrawable extends LayerDrawable {
|
||||
*/
|
||||
private void tryBackgroundEnter(boolean focused) {
|
||||
if (mBackground == null) {
|
||||
mBackground = new RippleBackground(this, mHotspotBounds);
|
||||
mBackground = new RippleBackground(this, mHotspotBounds, mForceSoftware);
|
||||
}
|
||||
|
||||
mBackground.setup(mState.mMaxRadius, mDensity);
|
||||
@ -584,7 +590,7 @@ public class RippleDrawable extends LayerDrawable {
|
||||
}
|
||||
|
||||
final boolean isBounded = isBounded();
|
||||
mRipple = new RippleForeground(this, mHotspotBounds, x, y, isBounded);
|
||||
mRipple = new RippleForeground(this, mHotspotBounds, x, y, isBounded, mForceSoftware);
|
||||
}
|
||||
|
||||
mRipple.setup(mState.mMaxRadius, mDensity);
|
||||
@ -949,6 +955,16 @@ public class RippleDrawable extends LayerDrawable {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets whether to disable RenderThread animations for this ripple.
|
||||
*
|
||||
* @param forceSoftware true if RenderThread animations should be disabled, false otherwise
|
||||
* @hide
|
||||
*/
|
||||
public void setForceSoftware(boolean forceSoftware) {
|
||||
mForceSoftware = forceSoftware;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConstantState getConstantState() {
|
||||
return mState;
|
||||
|
@ -87,8 +87,8 @@ class RippleForeground extends RippleComponent {
|
||||
private boolean mHasFinishedExit;
|
||||
|
||||
public RippleForeground(RippleDrawable owner, Rect bounds, float startingX, float startingY,
|
||||
boolean isBounded) {
|
||||
super(owner, bounds);
|
||||
boolean isBounded, boolean forceSoftware) {
|
||||
super(owner, bounds, forceSoftware);
|
||||
|
||||
mIsBounded = isBounded;
|
||||
mStartingX = startingX;
|
||||
|
@ -24,6 +24,7 @@ import android.graphics.drawable.AnimatedVectorDrawable;
|
||||
import android.graphics.drawable.AnimationDrawable;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.graphics.drawable.RippleDrawable;
|
||||
import android.service.notification.StatusBarNotification;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.MotionEvent;
|
||||
|
@ -86,6 +86,9 @@ public class NotificationBackgroundView extends View {
|
||||
if (mBackground != null) {
|
||||
mBackground.setCallback(this);
|
||||
}
|
||||
if (mBackground instanceof RippleDrawable) {
|
||||
((RippleDrawable) mBackground).setForceSoftware(true);
|
||||
}
|
||||
invalidate();
|
||||
}
|
||||
|
||||
|
@ -19,6 +19,7 @@ import android.animation.Animator;
|
||||
import android.animation.Animator.AnimatorListener;
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.content.Context;
|
||||
import android.graphics.drawable.RippleDrawable;
|
||||
import android.os.Handler;
|
||||
import android.os.Message;
|
||||
import android.util.AttributeSet;
|
||||
|
@ -26,6 +26,7 @@ import android.graphics.Outline;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.drawable.Animatable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.graphics.drawable.RippleDrawable;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.MathUtils;
|
||||
import android.util.TypedValue;
|
||||
@ -184,6 +185,12 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
|
||||
}
|
||||
});
|
||||
requestCaptureValues();
|
||||
|
||||
// RenderThread is doing more harm than good when touching the header (to expand quick
|
||||
// settings), so disable it for this view
|
||||
((RippleDrawable) getBackground()).setForceSoftware(true);
|
||||
((RippleDrawable) mSettingsButton.getBackground()).setForceSoftware(true);
|
||||
((RippleDrawable) mSystemIconsSuperContainer.getBackground()).setForceSoftware(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Reference in New Issue
Block a user