Merge "Add dark mode apis for setting colors and icons" into sc-dev am: 6bb6992fe9
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/13600948 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: I8b4d578b04df3e0c31d756f549248feb50f1f1c9
This commit is contained in:
@@ -55073,6 +55073,8 @@ package android.widget {
|
|||||||
method public void setChronometer(@IdRes int, long, String, boolean);
|
method public void setChronometer(@IdRes int, long, String, boolean);
|
||||||
method public void setChronometerCountDown(@IdRes int, boolean);
|
method public void setChronometerCountDown(@IdRes int, boolean);
|
||||||
method public void setColor(@IdRes int, @NonNull String, @ColorRes int);
|
method public void setColor(@IdRes int, @NonNull String, @ColorRes int);
|
||||||
|
method public void setColorInt(@IdRes int, @NonNull String, @ColorInt int, @ColorInt int);
|
||||||
|
method public void setColorStateList(@IdRes int, @NonNull String, @Nullable android.content.res.ColorStateList, @Nullable android.content.res.ColorStateList);
|
||||||
method public void setColorStateList(@IdRes int, @NonNull String, @ColorRes int);
|
method public void setColorStateList(@IdRes int, @NonNull String, @ColorRes int);
|
||||||
method public void setCompoundButtonChecked(@IdRes int, boolean);
|
method public void setCompoundButtonChecked(@IdRes int, boolean);
|
||||||
method public void setContentDescription(@IdRes int, CharSequence);
|
method public void setContentDescription(@IdRes int, CharSequence);
|
||||||
@@ -55083,6 +55085,7 @@ package android.widget {
|
|||||||
method public void setFloatDimen(@IdRes int, @NonNull String, @DimenRes int);
|
method public void setFloatDimen(@IdRes int, @NonNull String, @DimenRes int);
|
||||||
method public void setFloatDimen(@IdRes int, @NonNull String, float, int);
|
method public void setFloatDimen(@IdRes int, @NonNull String, float, int);
|
||||||
method public void setIcon(@IdRes int, String, android.graphics.drawable.Icon);
|
method public void setIcon(@IdRes int, String, android.graphics.drawable.Icon);
|
||||||
|
method public void setIcon(@IdRes int, @NonNull String, @Nullable android.graphics.drawable.Icon, @Nullable android.graphics.drawable.Icon);
|
||||||
method public void setImageViewBitmap(@IdRes int, android.graphics.Bitmap);
|
method public void setImageViewBitmap(@IdRes int, android.graphics.Bitmap);
|
||||||
method public void setImageViewIcon(@IdRes int, android.graphics.drawable.Icon);
|
method public void setImageViewIcon(@IdRes int, android.graphics.drawable.Icon);
|
||||||
method public void setImageViewResource(@IdRes int, @DrawableRes int);
|
method public void setImageViewResource(@IdRes int, @DrawableRes int);
|
||||||
|
|||||||
@@ -211,6 +211,7 @@ public class RemoteViews implements Parcelable, Filter {
|
|||||||
private static final int SET_RADIO_GROUP_CHECKED = 27;
|
private static final int SET_RADIO_GROUP_CHECKED = 27;
|
||||||
private static final int SET_VIEW_OUTLINE_RADIUS_TAG = 28;
|
private static final int SET_VIEW_OUTLINE_RADIUS_TAG = 28;
|
||||||
private static final int SET_ON_CHECKED_CHANGE_RESPONSE_TAG = 29;
|
private static final int SET_ON_CHECKED_CHANGE_RESPONSE_TAG = 29;
|
||||||
|
private static final int NIGHT_MODE_REFLECTION_ACTION_TAG = 30;
|
||||||
|
|
||||||
/** @hide **/
|
/** @hide **/
|
||||||
@IntDef(prefix = "MARGIN_", value = {
|
@IntDef(prefix = "MARGIN_", value = {
|
||||||
@@ -1877,6 +1878,73 @@ public class RemoteViews implements Parcelable, Filter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private final class NightModeReflectionAction extends BaseReflectionAction {
|
||||||
|
|
||||||
|
private final Object mLightValue;
|
||||||
|
private final Object mDarkValue;
|
||||||
|
|
||||||
|
NightModeReflectionAction(
|
||||||
|
@IdRes int viewId,
|
||||||
|
String methodName,
|
||||||
|
int type,
|
||||||
|
Object lightValue,
|
||||||
|
Object darkValue) {
|
||||||
|
super(viewId, methodName, type);
|
||||||
|
mLightValue = lightValue;
|
||||||
|
mDarkValue = darkValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
NightModeReflectionAction(Parcel in) {
|
||||||
|
super(in);
|
||||||
|
switch (this.type) {
|
||||||
|
case ICON:
|
||||||
|
mLightValue = in.readTypedObject(Icon.CREATOR);
|
||||||
|
mDarkValue = in.readTypedObject(Icon.CREATOR);
|
||||||
|
break;
|
||||||
|
case COLOR_STATE_LIST:
|
||||||
|
mLightValue = in.readTypedObject(ColorStateList.CREATOR);
|
||||||
|
mDarkValue = in.readTypedObject(ColorStateList.CREATOR);
|
||||||
|
break;
|
||||||
|
case INT:
|
||||||
|
mLightValue = in.readInt();
|
||||||
|
mDarkValue = in.readInt();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new ActionException("Unexpected night mode action type: " + this.type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeToParcel(Parcel out, int flags) {
|
||||||
|
super.writeToParcel(out, flags);
|
||||||
|
switch (this.type) {
|
||||||
|
case ICON:
|
||||||
|
case COLOR_STATE_LIST:
|
||||||
|
out.writeTypedObject((Parcelable) mLightValue, flags);
|
||||||
|
out.writeTypedObject((Parcelable) mDarkValue, flags);
|
||||||
|
break;
|
||||||
|
case INT:
|
||||||
|
out.writeInt((int) mLightValue);
|
||||||
|
out.writeInt((int) mDarkValue);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
protected Object getParameterValue(@Nullable View view) throws ActionException {
|
||||||
|
if (view == null) return null;
|
||||||
|
|
||||||
|
Configuration configuration = view.getResources().getConfiguration();
|
||||||
|
return configuration.isNightModeActive() ? mDarkValue : mLightValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getActionTag() {
|
||||||
|
return NIGHT_MODE_REFLECTION_ACTION_TAG;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is only used for async execution of actions and it not parcelable.
|
* This is only used for async execution of actions and it not parcelable.
|
||||||
*/
|
*/
|
||||||
@@ -3243,6 +3311,8 @@ public class RemoteViews implements Parcelable, Filter {
|
|||||||
return new SetViewOutlinePreferredRadiusAction(parcel);
|
return new SetViewOutlinePreferredRadiusAction(parcel);
|
||||||
case SET_ON_CHECKED_CHANGE_RESPONSE_TAG:
|
case SET_ON_CHECKED_CHANGE_RESPONSE_TAG:
|
||||||
return new SetOnCheckedChangeResponse(parcel);
|
return new SetOnCheckedChangeResponse(parcel);
|
||||||
|
case NIGHT_MODE_REFLECTION_ACTION_TAG:
|
||||||
|
return new NightModeReflectionAction(parcel);
|
||||||
default:
|
default:
|
||||||
throw new ActionException("Tag " + tag + " not found");
|
throw new ActionException("Tag " + tag + " not found");
|
||||||
}
|
}
|
||||||
@@ -4130,6 +4200,30 @@ public class RemoteViews implements Parcelable, Filter {
|
|||||||
ResourceReflectionAction.COLOR_RESOURCE, colorResource));
|
ResourceReflectionAction.COLOR_RESOURCE, colorResource));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Call a method taking one int, a color, on a view in the layout for this RemoteViews.
|
||||||
|
*
|
||||||
|
* @param viewId The id of the view on which to call the method.
|
||||||
|
* @param methodName The name of the method to call.
|
||||||
|
* @param notNight The value to pass to the method when the view's configuration is set to
|
||||||
|
* {@link Configuration#UI_MODE_NIGHT_NO}
|
||||||
|
* @param night The value to pass to the method when the view's configuration is set to
|
||||||
|
* {@link Configuration#UI_MODE_NIGHT_YES}
|
||||||
|
*/
|
||||||
|
public void setColorInt(
|
||||||
|
@IdRes int viewId,
|
||||||
|
@NonNull String methodName,
|
||||||
|
@ColorInt int notNight,
|
||||||
|
@ColorInt int night) {
|
||||||
|
addAction(
|
||||||
|
new NightModeReflectionAction(
|
||||||
|
viewId,
|
||||||
|
methodName,
|
||||||
|
BaseReflectionAction.INT,
|
||||||
|
notNight,
|
||||||
|
night));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Call a method taking one ColorStateList on a view in the layout for this RemoteViews.
|
* Call a method taking one ColorStateList on a view in the layout for this RemoteViews.
|
||||||
@@ -4145,6 +4239,30 @@ public class RemoteViews implements Parcelable, Filter {
|
|||||||
value));
|
value));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Call a method taking one ColorStateList on a view in the layout for this RemoteViews.
|
||||||
|
*
|
||||||
|
* @param viewId The id of the view on which to call the method.
|
||||||
|
* @param methodName The name of the method to call.
|
||||||
|
* @param notNight The value to pass to the method when the view's configuration is set to
|
||||||
|
* {@link Configuration#UI_MODE_NIGHT_NO}
|
||||||
|
* @param night The value to pass to the method when the view's configuration is set to
|
||||||
|
* {@link Configuration#UI_MODE_NIGHT_YES}
|
||||||
|
*/
|
||||||
|
public void setColorStateList(
|
||||||
|
@IdRes int viewId,
|
||||||
|
@NonNull String methodName,
|
||||||
|
@Nullable ColorStateList notNight,
|
||||||
|
@Nullable ColorStateList night) {
|
||||||
|
addAction(
|
||||||
|
new NightModeReflectionAction(
|
||||||
|
viewId,
|
||||||
|
methodName,
|
||||||
|
BaseReflectionAction.COLOR_STATE_LIST,
|
||||||
|
notNight,
|
||||||
|
night));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Call a method taking one ColorStateList on a view in the layout for this RemoteViews.
|
* Call a method taking one ColorStateList on a view in the layout for this RemoteViews.
|
||||||
*
|
*
|
||||||
@@ -4355,6 +4473,30 @@ public class RemoteViews implements Parcelable, Filter {
|
|||||||
addAction(new ReflectionAction(viewId, methodName, BaseReflectionAction.ICON, value));
|
addAction(new ReflectionAction(viewId, methodName, BaseReflectionAction.ICON, value));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Call a method taking one Icon on a view in the layout for this RemoteViews.
|
||||||
|
*
|
||||||
|
* @param viewId The id of the view on which to call the method.
|
||||||
|
* @param methodName The name of the method to call.
|
||||||
|
* @param notNight The value to pass to the method when the view's configuration is set to
|
||||||
|
* {@link Configuration#UI_MODE_NIGHT_NO}
|
||||||
|
* @param night The value to pass to the method when the view's configuration is set to
|
||||||
|
* {@link Configuration#UI_MODE_NIGHT_YES}
|
||||||
|
*/
|
||||||
|
public void setIcon(
|
||||||
|
@IdRes int viewId,
|
||||||
|
@NonNull String methodName,
|
||||||
|
@Nullable Icon notNight,
|
||||||
|
@Nullable Icon night) {
|
||||||
|
addAction(
|
||||||
|
new NightModeReflectionAction(
|
||||||
|
viewId,
|
||||||
|
methodName,
|
||||||
|
BaseReflectionAction.ICON,
|
||||||
|
notNight,
|
||||||
|
night));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Equivalent to calling View.setContentDescription(CharSequence).
|
* Equivalent to calling View.setContentDescription(CharSequence).
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user