Merge "AOD: Fix icon color when updating on AOD" into oc-dev

This commit is contained in:
Adrian Roos
2017-04-17 18:48:37 +00:00
committed by Android (Google) Code Review
2 changed files with 17 additions and 8 deletions

View File

@@ -499,12 +499,18 @@ public class StatusBarIconView extends AnimatedImageView {
}
private void setColorInternal(int color) {
if (color != NO_COLOR) {
setImageTintList(ColorStateList.valueOf(color));
mCurrentSetColor = color;
updateIconColor();
}
private void updateIconColor() {
if (mCurrentSetColor != NO_COLOR) {
setImageTintList(ColorStateList.valueOf(NotificationUtils.interpolateColors(
mCurrentSetColor, Color.WHITE, mDarkAmount)));
} else {
setImageTintList(null);
mDozer.updateGrayscale(this, mDarkAmount);
}
mCurrentSetColor = color;
}
public void setIconColor(int iconColor, boolean animate) {
@@ -669,10 +675,10 @@ public class StatusBarIconView extends AnimatedImageView {
}
public void setDark(boolean dark, boolean fade, long delay) {
mDozer.setImageDark(this, dark, fade, delay, mIconColor == NO_COLOR);
mDozer.setIntensityDark(f -> {
mDarkAmount = f;
updateDecorColor();
updateIconColor();
}, dark, fade, delay);
}

View File

@@ -35,8 +35,7 @@ public class NotificationDozeHelper {
startIntensityAnimation(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
updateGrayscaleMatrix((float) animation.getAnimatedValue());
target.setColorFilter(new ColorMatrixColorFilter(mGrayscaleColorMatrix));
updateGrayscale(target, (float) animation.getAnimatedValue());
}
}, dark, delay, new AnimatorListenerAdapter() {
@Override
@@ -49,8 +48,12 @@ public class NotificationDozeHelper {
}
public void updateGrayscale(ImageView target, boolean dark) {
if (dark) {
updateGrayscaleMatrix(1f);
updateGrayscale(target, dark ? 1 : 0);
}
public void updateGrayscale(ImageView target, float darkAmount) {
if (darkAmount > 0) {
updateGrayscaleMatrix(darkAmount);
target.setColorFilter(new ColorMatrixColorFilter(mGrayscaleColorMatrix));
} else {
target.setColorFilter(null);