Animate notification background color directly

Before we were calling setBackgroundColor() in the update
listener, which is less efficient because it creates a
new ColorDrawable; now we reuse one throughout.

Change-Id: I0cd87e5ee72af41d2dae4375ce3df9fd6e92bd82
This commit is contained in:
Tony
2017-02-14 10:18:48 -08:00
parent a59402f98c
commit ffb0b68ae2

View File

@@ -18,8 +18,11 @@ package com.android.launcher3.notification;
import android.animation.Animator;
import android.animation.AnimatorSet;
import android.animation.ArgbEvaluator;
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.content.Context;
import android.graphics.drawable.ColorDrawable;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
@@ -39,10 +42,13 @@ import com.android.launcher3.userevent.nano.LauncherLogProto;
*/
public class NotificationMainView extends LinearLayout implements SwipeHelper.Callback {
private final ArgbEvaluator mArgbEvaluator = new ArgbEvaluator();
private NotificationInfo mNotificationInfo;
private TextView mTitleView;
private TextView mTextView;
private IconPalette mIconPalette;
private ColorDrawable mColorBackground;
public NotificationMainView(Context context) {
this(context, null, 0);
@@ -65,7 +71,8 @@ public class NotificationMainView extends LinearLayout implements SwipeHelper.Ca
}
public void applyColors(IconPalette iconPalette) {
setBackgroundColor(iconPalette.backgroundColor);
mColorBackground = new ColorDrawable(iconPalette.backgroundColor);
setBackground(mColorBackground);
mIconPalette = iconPalette;
}
@@ -81,7 +88,7 @@ public class NotificationMainView extends LinearLayout implements SwipeHelper.Ca
if (animate) {
mTitleView.setAlpha(0);
mTextView.setAlpha(0);
setBackgroundColor(mIconPalette.secondaryColor);
mColorBackground.setColor(mIconPalette.secondaryColor);
}
mNotificationInfo = mainNotification;
mTitleView.setText(mNotificationInfo.title);
@@ -97,14 +104,8 @@ public class NotificationMainView extends LinearLayout implements SwipeHelper.Ca
AnimatorSet animation = LauncherAnimUtils.createAnimatorSet();
Animator textFade = new LauncherViewPropertyAnimator(mTextView).alpha(1);
Animator titleFade = new LauncherViewPropertyAnimator(mTitleView).alpha(1);
ValueAnimator colorChange = ValueAnimator.ofArgb(mIconPalette.secondaryColor,
mIconPalette.backgroundColor);
colorChange.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
setBackgroundColor((Integer) valueAnimator.getAnimatedValue());
}
});
ValueAnimator colorChange = ObjectAnimator.ofObject(mColorBackground, "color",
mArgbEvaluator, mIconPalette.secondaryColor, mIconPalette.backgroundColor);
animation.playTogether(textFade, titleFade, colorChange);
animation.setDuration(150);
animation.start();