Merge "Fixed an issue where added icons were white in multiwindow" into oc-mr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
3f0dd94efc
@@ -43,6 +43,7 @@ import android.util.FloatProperty;
|
||||
import android.util.Log;
|
||||
import android.util.Property;
|
||||
import android.util.TypedValue;
|
||||
import android.view.View;
|
||||
import android.view.ViewDebug;
|
||||
import android.view.accessibility.AccessibilityEvent;
|
||||
import android.view.animation.Interpolator;
|
||||
@@ -142,6 +143,7 @@ public class StatusBarIconView extends AnimatedImageView {
|
||||
private float[] mMatrix;
|
||||
private ColorMatrixColorFilter mMatrixColorFilter;
|
||||
private boolean mIsInShelf;
|
||||
private Runnable mLayoutRunnable;
|
||||
|
||||
public StatusBarIconView(Context context, String slot, StatusBarNotification sbn) {
|
||||
this(context, slot, sbn, false);
|
||||
@@ -822,6 +824,19 @@ public class StatusBarIconView extends AnimatedImageView {
|
||||
return mIsInShelf;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
|
||||
super.onLayout(changed, left, top, right, bottom);
|
||||
if (mLayoutRunnable != null) {
|
||||
mLayoutRunnable.run();
|
||||
mLayoutRunnable = null;
|
||||
}
|
||||
}
|
||||
|
||||
public void executeOnLayout(Runnable runnable) {
|
||||
mLayoutRunnable = runnable;
|
||||
}
|
||||
|
||||
public interface OnVisibilityChangedListener {
|
||||
void onVisibilityChanged(int newVisibility);
|
||||
}
|
||||
|
||||
@@ -4,10 +4,8 @@ import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.drawable.Icon;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.util.ArrayMap;
|
||||
import android.support.v4.util.ArraySet;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.FrameLayout;
|
||||
@@ -269,18 +267,26 @@ public class NotificationIconAreaController implements DarkReceiver {
|
||||
*/
|
||||
private void applyNotificationIconsTint() {
|
||||
for (int i = 0; i < mNotificationIcons.getChildCount(); i++) {
|
||||
StatusBarIconView v = (StatusBarIconView) mNotificationIcons.getChildAt(i);
|
||||
boolean isPreL = Boolean.TRUE.equals(v.getTag(R.id.icon_is_pre_L));
|
||||
int color = StatusBarIconView.NO_COLOR;
|
||||
boolean colorize = !isPreL || NotificationUtils.isGrayscale(v, mNotificationColorUtil);
|
||||
if (colorize) {
|
||||
color = DarkIconDispatcher.getTint(mTintArea, v, mIconTint);
|
||||
final StatusBarIconView iv = (StatusBarIconView) mNotificationIcons.getChildAt(i);
|
||||
if (iv.getWidth() != 0) {
|
||||
updateTintForIcon(iv);
|
||||
} else {
|
||||
iv.executeOnLayout(() -> updateTintForIcon(iv));
|
||||
}
|
||||
v.setStaticDrawableColor(color);
|
||||
v.setDecorColor(mIconTint);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateTintForIcon(StatusBarIconView v) {
|
||||
boolean isPreL = Boolean.TRUE.equals(v.getTag(R.id.icon_is_pre_L));
|
||||
int color = StatusBarIconView.NO_COLOR;
|
||||
boolean colorize = !isPreL || NotificationUtils.isGrayscale(v, mNotificationColorUtil);
|
||||
if (colorize) {
|
||||
color = DarkIconDispatcher.getTint(mTintArea, v, mIconTint);
|
||||
}
|
||||
v.setStaticDrawableColor(color);
|
||||
v.setDecorColor(mIconTint);
|
||||
}
|
||||
|
||||
public void setDark(boolean dark) {
|
||||
mNotificationIcons.setDark(dark, false, 0);
|
||||
mShelfIcons.setDark(dark, false, 0);
|
||||
|
||||
Reference in New Issue
Block a user