Merge "Add shadow to Dream status bar items." into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
b00fd1d78d
@@ -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" />
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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 =
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user