Merge "Fix all RemoteInputView colors when isColorized changes." into sc-dev

This commit is contained in:
Jeff DeCew
2021-04-06 14:44:26 +00:00
committed by Android (Google) Code Review
2 changed files with 56 additions and 67 deletions

View File

@@ -873,14 +873,19 @@ public class NotificationContentView extends FrameLayout {
}
public void setBackgroundTintColor(int color) {
boolean colorized = mNotificationEntry.getSbn().getNotification().isColorized();
if (mExpandedSmartReplyView != null) {
boolean colorized = mNotificationEntry.getSbn().getNotification().isColorized();
mExpandedSmartReplyView.setBackgroundTintColor(color, colorized);
}
if (mHeadsUpSmartReplyView != null) {
boolean colorized = mNotificationEntry.getSbn().getNotification().isColorized();
mHeadsUpSmartReplyView.setBackgroundTintColor(color, colorized);
}
if (mExpandedRemoteInput != null) {
mExpandedRemoteInput.setBackgroundTintColor(color, colorized);
}
if (mHeadsUpRemoteInput != null) {
mHeadsUpRemoteInput.setBackgroundTintColor(color, colorized);
}
}
public int getVisibleType() {
@@ -1243,8 +1248,7 @@ public class NotificationContentView extends FrameLayout {
View actionContainerCandidate = view.findViewById(
com.android.internal.R.id.actions_container);
if (actionContainerCandidate instanceof FrameLayout) {
RemoteInputView existing = (RemoteInputView)
view.findViewWithTag(RemoteInputView.VIEW_TAG);
RemoteInputView existing = view.findViewWithTag(RemoteInputView.VIEW_TAG);
if (existing != null) {
existing.onNotificationUpdateOrReset();
@@ -1292,13 +1296,9 @@ public class NotificationContentView extends FrameLayout {
}
}
if (existing != null) {
if (entry.getSbn().getNotification().isColorized()) {
existing.setBackgroundTintColor(
entry.getSbn().getNotification().color, true);
} else {
existing.setBackgroundTintColor(
entry.getRow().getCurrentBackgroundTint(), false);
}
int backgroundColor = entry.getRow().getCurrentBackgroundTint();
boolean colorized = mNotificationEntry.getSbn().getNotification().isColorized();
existing.setBackgroundTintColor(backgroundColor, colorized);
}
return existing;
}

View File

@@ -34,6 +34,7 @@ import android.content.pm.ShortcutManager;
import android.content.res.ColorStateList;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.graphics.Rect;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
@@ -157,52 +158,48 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene
/**
* The remote view needs to adapt to colorized notifications when set
* It overrides the background of itself as well as all of its childern
* @param color colorized notification color
* @param backgroundColor colorized notification color
*/
public void setBackgroundTintColor(int color, boolean colorized) {
if (colorized == mColorized && color == mTint) return;
public void setBackgroundTintColor(final int backgroundColor, boolean colorized) {
if (colorized == mColorized && backgroundColor == mTint) return;
mColorized = colorized;
mTint = color;
final int[][] states = new int[][]{
new int[]{com.android.internal.R.attr.state_enabled},
new int[]{},
};
final int[] colors;
mTint = backgroundColor;
final int editBgColor;
final int accentColor;
final int textColor;
final int hintTextColor;
if (colorized) {
final boolean dark = !ContrastColorUtil.isColorLight(color);
final int finalColor = dark
? Color.WHITE
: Color.BLACK;
colors = new int[]{
finalColor,
finalColor & 0x4DFFFFFF // %30 opacity
};
mEditText.setUniformBackgroundTintColor(color);
mEditText.setUniformForegroundColor(finalColor);
final boolean dark = !ContrastColorUtil.isColorLight(backgroundColor);
final int foregroundColor = dark ? Color.WHITE : Color.BLACK;
editBgColor = backgroundColor;
accentColor = foregroundColor;
textColor = foregroundColor;
hintTextColor = ColorUtils.setAlphaComponent(foregroundColor, 0x99);
} else {
mEditText.setTextColor(mContext.getColor(R.color.remote_input_text));
mEditText.setHintTextColor(mContext.getColorStateList(R.color.remote_input_hint));
TypedArray ta = getContext().getTheme().obtainStyledAttributes(new int[]{
textColor = mContext.getColor(R.color.remote_input_text);
hintTextColor = mContext.getColor(R.color.remote_input_hint);
try (TypedArray ta = getContext().getTheme().obtainStyledAttributes(new int[]{
com.android.internal.R.attr.colorAccent,
com.android.internal.R.attr.colorBackgroundFloating,
});
int colorAccent = ta.getColor(0, 0);
int colorBackgroundFloating = ta.getColor(1, 0);
ta.recycle();
mEditText.setTextBackgroundColors(colorAccent, colorBackgroundFloating);
colors = new int[]{
colorAccent,
colorBackgroundFloating & 0x4DFFFFFF // %30 opacity
};
})) {
accentColor = ta.getColor(0, textColor);
editBgColor = ta.getColor(1, backgroundColor);
}
}
mEditText.setBackgroundColor(color);
final ColorStateList tint = new ColorStateList(states, colors);
mSendButton.setImageTintList(tint);
mProgressBar.setProgressTintList(tint);
mProgressBar.setIndeterminateTintList(tint);
mProgressBar.setSecondaryProgressTintList(tint);
setBackgroundColor(color);
mEditText.setAllColors(backgroundColor, editBgColor,
accentColor, textColor, hintTextColor);
final ColorStateList accentTint = new ColorStateList(new int[][]{
new int[]{com.android.internal.R.attr.state_enabled},
new int[]{},
}, new int[]{
accentColor,
accentColor & 0x4DFFFFFF // %30 opacity
});
mSendButton.setImageTintList(accentTint);
mProgressBar.setProgressTintList(accentTint);
mProgressBar.setIndeterminateTintList(accentTint);
mProgressBar.setSecondaryProgressTintList(accentTint);
setBackgroundColor(backgroundColor);
}
@Override
@@ -796,20 +793,6 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene
}
}
protected void setUniformBackgroundTintColor(int color) {
mBackgroundColor.setColor(color);
mTextBackground.setColor(color);
}
protected void setUniformForegroundColor(int color) {
int stroke = getContext().getResources()
.getDimensionPixelSize(R.dimen.remote_input_view_text_stroke);
mTextBackground.setStroke(stroke, color);
setTextColor(color);
setHintTextColor(ColorUtils.setAlphaComponent(color, 0x99));
setTextCursorDrawable(null);
}
@Override
public void getFocusedRect(Rect r) {
super.getFocusedRect(r);
@@ -938,11 +921,17 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene
return remainingItems;
}
protected void setTextBackgroundColors(int strokeColor, int textBackground) {
mTextBackground.setColor(textBackground);
protected void setAllColors(int backgroundColor, int editBackgroundColor,
int accentColor, int textColor, int hintTextColor) {
setBackgroundColor(backgroundColor);
mBackgroundColor.setColor(backgroundColor);
mTextBackground.setColor(editBackgroundColor);
int stroke = getContext().getResources()
.getDimensionPixelSize(R.dimen.remote_input_view_text_stroke);
mTextBackground.setStroke(stroke, strokeColor);
mTextBackground.setStroke(stroke, accentColor);
setTextColor(textColor);
setHintTextColor(hintTextColor);
getTextCursorDrawable().setColorFilter(accentColor, PorterDuff.Mode.SRC_IN);
}
}
}