Merge "Add shadow to Dream status bar items." into tm-qpr-dev

This commit is contained in:
Victor Truong
2023-01-11 15:14:10 +00:00
committed by Android (Google) Code Review
4 changed files with 82 additions and 33 deletions

View File

@@ -57,6 +57,7 @@
android:layout_width="@dimen/dream_overlay_status_bar_icon_size" android:layout_width="@dimen/dream_overlay_status_bar_icon_size"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginStart="@dimen/dream_overlay_status_icon_margin" android:layout_marginStart="@dimen/dream_overlay_status_icon_margin"
android:layout_marginTop="@dimen/dream_overlay_status_bar_marginTop"
android:src="@drawable/ic_alarm" android:src="@drawable/ic_alarm"
android:tint="@android:color/white" android:tint="@android:color/white"
android:visibility="gone" android:visibility="gone"
@@ -67,6 +68,7 @@
android:layout_width="@dimen/dream_overlay_status_bar_icon_size" android:layout_width="@dimen/dream_overlay_status_bar_icon_size"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginStart="@dimen/dream_overlay_status_icon_margin" android:layout_marginStart="@dimen/dream_overlay_status_icon_margin"
android:layout_marginTop="@dimen/dream_overlay_status_bar_marginTop"
android:src="@drawable/ic_qs_dnd_on" android:src="@drawable/ic_qs_dnd_on"
android:tint="@android:color/white" android:tint="@android:color/white"
android:visibility="gone" android:visibility="gone"
@@ -77,6 +79,7 @@
android:layout_width="@dimen/dream_overlay_status_bar_icon_size" android:layout_width="@dimen/dream_overlay_status_bar_icon_size"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginStart="@dimen/dream_overlay_status_icon_margin" android:layout_marginStart="@dimen/dream_overlay_status_icon_margin"
android:layout_marginTop="@dimen/dream_overlay_status_bar_marginTop"
android:src="@drawable/ic_signal_wifi_off" android:src="@drawable/ic_signal_wifi_off"
android:visibility="gone" android:visibility="gone"
android:contentDescription="@string/dream_overlay_status_bar_wifi_off" /> android:contentDescription="@string/dream_overlay_status_bar_wifi_off" />

View File

@@ -1623,6 +1623,8 @@
<dimen name="dream_overlay_status_bar_ambient_text_shadow_dx">0.5dp</dimen> <dimen name="dream_overlay_status_bar_ambient_text_shadow_dx">0.5dp</dimen>
<dimen name="dream_overlay_status_bar_ambient_text_shadow_dy">0.5dp</dimen> <dimen name="dream_overlay_status_bar_ambient_text_shadow_dy">0.5dp</dimen>
<dimen name="dream_overlay_status_bar_ambient_text_shadow_radius">2dp</dimen> <dimen name="dream_overlay_status_bar_ambient_text_shadow_radius">2dp</dimen>
<dimen name="dream_overlay_icon_inset_dimen">0dp</dimen>
<dimen name="dream_overlay_status_bar_marginTop">22dp</dimen>
<!-- Default device corner radius, used for assist UI --> <!-- Default device corner radius, used for assist UI -->
<dimen name="config_rounded_mask_size">0px</dimen> <dimen name="config_rounded_mask_size">0px</dimen>

View File

@@ -48,48 +48,28 @@ constructor(
val drawableInsetSize: Int val drawableInsetSize: Int
try { try {
val keyShadowBlur = val keyShadowBlur =
attributes.getDimensionPixelSize(R.styleable.DoubleShadowTextView_keyShadowBlur, 0) attributes.getDimension(R.styleable.DoubleShadowTextView_keyShadowBlur, 0f)
val keyShadowOffsetX = val keyShadowOffsetX =
attributes.getDimensionPixelSize( attributes.getDimension(R.styleable.DoubleShadowTextView_keyShadowOffsetX, 0f)
R.styleable.DoubleShadowTextView_keyShadowOffsetX,
0
)
val keyShadowOffsetY = val keyShadowOffsetY =
attributes.getDimensionPixelSize( attributes.getDimension(R.styleable.DoubleShadowTextView_keyShadowOffsetY, 0f)
R.styleable.DoubleShadowTextView_keyShadowOffsetY,
0
)
val keyShadowAlpha = val keyShadowAlpha =
attributes.getFloat(R.styleable.DoubleShadowTextView_keyShadowAlpha, 0f) attributes.getFloat(R.styleable.DoubleShadowTextView_keyShadowAlpha, 0f)
mKeyShadowInfo = mKeyShadowInfo =
ShadowInfo( ShadowInfo(keyShadowBlur, keyShadowOffsetX, keyShadowOffsetY, keyShadowAlpha)
keyShadowBlur.toFloat(),
keyShadowOffsetX.toFloat(),
keyShadowOffsetY.toFloat(),
keyShadowAlpha
)
val ambientShadowBlur = val ambientShadowBlur =
attributes.getDimensionPixelSize( attributes.getDimension(R.styleable.DoubleShadowTextView_ambientShadowBlur, 0f)
R.styleable.DoubleShadowTextView_ambientShadowBlur,
0
)
val ambientShadowOffsetX = val ambientShadowOffsetX =
attributes.getDimensionPixelSize( attributes.getDimension(R.styleable.DoubleShadowTextView_ambientShadowOffsetX, 0f)
R.styleable.DoubleShadowTextView_ambientShadowOffsetX,
0
)
val ambientShadowOffsetY = val ambientShadowOffsetY =
attributes.getDimensionPixelSize( attributes.getDimension(R.styleable.DoubleShadowTextView_ambientShadowOffsetY, 0f)
R.styleable.DoubleShadowTextView_ambientShadowOffsetY,
0
)
val ambientShadowAlpha = val ambientShadowAlpha =
attributes.getFloat(R.styleable.DoubleShadowTextView_ambientShadowAlpha, 0f) attributes.getFloat(R.styleable.DoubleShadowTextView_ambientShadowAlpha, 0f)
mAmbientShadowInfo = mAmbientShadowInfo =
ShadowInfo( ShadowInfo(
ambientShadowBlur.toFloat(), ambientShadowBlur,
ambientShadowOffsetX.toFloat(), ambientShadowOffsetX,
ambientShadowOffsetY.toFloat(), ambientShadowOffsetY,
ambientShadowAlpha ambientShadowAlpha
) )
drawableSize = drawableSize =

View File

@@ -19,6 +19,7 @@ package com.android.systemui.dreams;
import android.annotation.IntDef; import android.annotation.IntDef;
import android.annotation.Nullable; import android.annotation.Nullable;
import android.content.Context; import android.content.Context;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@@ -26,6 +27,9 @@ import android.view.ViewGroup;
import androidx.constraintlayout.widget.ConstraintLayout; import androidx.constraintlayout.widget.ConstraintLayout;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.shared.shadow.DoubleShadowIconDrawable;
import com.android.systemui.shared.shadow.DoubleShadowTextHelper.ShadowInfo;
import com.android.systemui.statusbar.AlphaOptimizedImageView;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy; import java.lang.annotation.RetentionPolicy;
@@ -60,8 +64,15 @@ public class DreamOverlayStatusBarView extends ConstraintLayout {
public static final int STATUS_ICON_PRIORITY_MODE_ON = 6; public static final int STATUS_ICON_PRIORITY_MODE_ON = 6;
private final Map<Integer, View> mStatusIcons = new HashMap<>(); private final Map<Integer, View> mStatusIcons = new HashMap<>();
private Context mContext;
private ViewGroup mSystemStatusViewGroup; private ViewGroup mSystemStatusViewGroup;
private ViewGroup mExtraSystemStatusViewGroup; private ViewGroup mExtraSystemStatusViewGroup;
private ShadowInfo mKeyShadowInfo;
private ShadowInfo mAmbientShadowInfo;
private int mDrawableSize;
private int mDrawableInsetSize;
private static final float KEY_SHADOW_ALPHA = 0.35f;
private static final float AMBIENT_SHADOW_ALPHA = 0.4f;
public DreamOverlayStatusBarView(Context context) { public DreamOverlayStatusBarView(Context context) {
this(context, null); this(context, null);
@@ -73,6 +84,7 @@ public class DreamOverlayStatusBarView extends ConstraintLayout {
public DreamOverlayStatusBarView(Context context, AttributeSet attrs, int defStyleAttr) { public DreamOverlayStatusBarView(Context context, AttributeSet attrs, int defStyleAttr) {
this(context, attrs, defStyleAttr, 0); this(context, attrs, defStyleAttr, 0);
mContext = context;
} }
public DreamOverlayStatusBarView( public DreamOverlayStatusBarView(
@@ -80,14 +92,36 @@ public class DreamOverlayStatusBarView extends ConstraintLayout {
super(context, attrs, defStyleAttr, defStyleRes); super(context, attrs, defStyleAttr, defStyleRes);
} }
@Override @Override
protected void onFinishInflate() { protected void onFinishInflate() {
super.onFinishInflate(); super.onFinishInflate();
mKeyShadowInfo = createShadowInfo(
R.dimen.dream_overlay_status_bar_key_text_shadow_radius,
R.dimen.dream_overlay_status_bar_key_text_shadow_dx,
R.dimen.dream_overlay_status_bar_key_text_shadow_dy,
KEY_SHADOW_ALPHA
);
mAmbientShadowInfo = createShadowInfo(
R.dimen.dream_overlay_status_bar_ambient_text_shadow_radius,
R.dimen.dream_overlay_status_bar_ambient_text_shadow_dx,
R.dimen.dream_overlay_status_bar_ambient_text_shadow_dy,
AMBIENT_SHADOW_ALPHA
);
mDrawableSize = mContext
.getResources()
.getDimensionPixelSize(R.dimen.dream_overlay_status_bar_icon_size);
mDrawableInsetSize = mContext
.getResources()
.getDimensionPixelSize(R.dimen.dream_overlay_icon_inset_dimen);
mStatusIcons.put(STATUS_ICON_WIFI_UNAVAILABLE, mStatusIcons.put(STATUS_ICON_WIFI_UNAVAILABLE,
fetchStatusIconForResId(R.id.dream_overlay_wifi_status)); addDoubleShadow(fetchStatusIconForResId(R.id.dream_overlay_wifi_status)));
mStatusIcons.put(STATUS_ICON_ALARM_SET, mStatusIcons.put(STATUS_ICON_ALARM_SET,
fetchStatusIconForResId(R.id.dream_overlay_alarm_set)); addDoubleShadow(fetchStatusIconForResId(R.id.dream_overlay_alarm_set)));
mStatusIcons.put(STATUS_ICON_CAMERA_DISABLED, mStatusIcons.put(STATUS_ICON_CAMERA_DISABLED,
fetchStatusIconForResId(R.id.dream_overlay_camera_off)); fetchStatusIconForResId(R.id.dream_overlay_camera_off));
mStatusIcons.put(STATUS_ICON_MIC_DISABLED, mStatusIcons.put(STATUS_ICON_MIC_DISABLED,
@@ -97,7 +131,7 @@ public class DreamOverlayStatusBarView extends ConstraintLayout {
mStatusIcons.put(STATUS_ICON_NOTIFICATIONS, mStatusIcons.put(STATUS_ICON_NOTIFICATIONS,
fetchStatusIconForResId(R.id.dream_overlay_notification_indicator)); fetchStatusIconForResId(R.id.dream_overlay_notification_indicator));
mStatusIcons.put(STATUS_ICON_PRIORITY_MODE_ON, mStatusIcons.put(STATUS_ICON_PRIORITY_MODE_ON,
fetchStatusIconForResId(R.id.dream_overlay_priority_mode)); addDoubleShadow(fetchStatusIconForResId(R.id.dream_overlay_priority_mode)));
mSystemStatusViewGroup = findViewById(R.id.dream_overlay_system_status); mSystemStatusViewGroup = findViewById(R.id.dream_overlay_system_status);
mExtraSystemStatusViewGroup = findViewById(R.id.dream_overlay_extra_items); mExtraSystemStatusViewGroup = findViewById(R.id.dream_overlay_extra_items);
@@ -137,4 +171,34 @@ public class DreamOverlayStatusBarView extends ConstraintLayout {
} }
return false; return false;
} }
private View addDoubleShadow(View icon) {
if (icon instanceof AlphaOptimizedImageView) {
AlphaOptimizedImageView i = (AlphaOptimizedImageView) icon;
Drawable drawableIcon = i.getDrawable();
i.setImageDrawable(new DoubleShadowIconDrawable(
mKeyShadowInfo,
mAmbientShadowInfo,
drawableIcon,
mDrawableSize,
mDrawableInsetSize
));
}
return icon;
}
private ShadowInfo createShadowInfo(int blurId, int offsetXId, int offsetYId, float alpha) {
return new ShadowInfo(
fetchDimensionForResId(blurId),
fetchDimensionForResId(offsetXId),
fetchDimensionForResId(offsetYId),
alpha
);
}
private Float fetchDimensionForResId(int resId) {
return mContext
.getResources()
.getDimension(resId);
}
} }