Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9b45d721 authored by Victor Truong's avatar Victor Truong
Browse files

Add shadow to Dream status bar items.

Bug: 257997891
Test: Manually tested
Change-Id: I4120e45caf9305879245bd730153773bd7cbd89e
parent e7de904e
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@
            android:layout_width="@dimen/dream_overlay_status_bar_icon_size"
            android:layout_height="match_parent"
            android:layout_marginStart="@dimen/dream_overlay_status_icon_margin"
            android:layout_marginTop="@dimen/dream_overlay_status_bar_marginTop"
            android:src="@drawable/ic_alarm"
            android:tint="@android:color/white"
            android:visibility="gone"
@@ -67,6 +68,7 @@
            android:layout_width="@dimen/dream_overlay_status_bar_icon_size"
            android:layout_height="match_parent"
            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:tint="@android:color/white"
            android:visibility="gone"
@@ -77,6 +79,7 @@
            android:layout_width="@dimen/dream_overlay_status_bar_icon_size"
            android:layout_height="match_parent"
            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:visibility="gone"
            android:contentDescription="@string/dream_overlay_status_bar_wifi_off" />
+2 −0
Original line number Diff line number Diff line
@@ -1610,6 +1610,8 @@
    <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_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 -->
    <dimen name="config_rounded_mask_size">0px</dimen>
+10 −30
Original line number Diff line number Diff line
@@ -48,48 +48,28 @@ constructor(
        val drawableInsetSize: Int
        try {
            val keyShadowBlur =
                attributes.getDimensionPixelSize(R.styleable.DoubleShadowTextView_keyShadowBlur, 0)
                attributes.getDimension(R.styleable.DoubleShadowTextView_keyShadowBlur, 0f)
            val keyShadowOffsetX =
                attributes.getDimensionPixelSize(
                    R.styleable.DoubleShadowTextView_keyShadowOffsetX,
                    0
                )
                attributes.getDimension(R.styleable.DoubleShadowTextView_keyShadowOffsetX, 0f)
            val keyShadowOffsetY =
                attributes.getDimensionPixelSize(
                    R.styleable.DoubleShadowTextView_keyShadowOffsetY,
                    0
                )
                attributes.getDimension(R.styleable.DoubleShadowTextView_keyShadowOffsetY, 0f)
            val keyShadowAlpha =
                attributes.getFloat(R.styleable.DoubleShadowTextView_keyShadowAlpha, 0f)
            mKeyShadowInfo =
                ShadowInfo(
                    keyShadowBlur.toFloat(),
                    keyShadowOffsetX.toFloat(),
                    keyShadowOffsetY.toFloat(),
                    keyShadowAlpha
                )
                ShadowInfo(keyShadowBlur, keyShadowOffsetX, keyShadowOffsetY, keyShadowAlpha)
            val ambientShadowBlur =
                attributes.getDimensionPixelSize(
                    R.styleable.DoubleShadowTextView_ambientShadowBlur,
                    0
                )
                attributes.getDimension(R.styleable.DoubleShadowTextView_ambientShadowBlur, 0f)
            val ambientShadowOffsetX =
                attributes.getDimensionPixelSize(
                    R.styleable.DoubleShadowTextView_ambientShadowOffsetX,
                    0
                )
                attributes.getDimension(R.styleable.DoubleShadowTextView_ambientShadowOffsetX, 0f)
            val ambientShadowOffsetY =
                attributes.getDimensionPixelSize(
                    R.styleable.DoubleShadowTextView_ambientShadowOffsetY,
                    0
                )
                attributes.getDimension(R.styleable.DoubleShadowTextView_ambientShadowOffsetY, 0f)
            val ambientShadowAlpha =
                attributes.getFloat(R.styleable.DoubleShadowTextView_ambientShadowAlpha, 0f)
            mAmbientShadowInfo =
                ShadowInfo(
                    ambientShadowBlur.toFloat(),
                    ambientShadowOffsetX.toFloat(),
                    ambientShadowOffsetY.toFloat(),
                    ambientShadowBlur,
                    ambientShadowOffsetX,
                    ambientShadowOffsetY,
                    ambientShadowAlpha
                )
            drawableSize =
+67 −3
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.systemui.dreams;
import android.annotation.IntDef;
import android.annotation.Nullable;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
@@ -26,6 +27,9 @@ import android.view.ViewGroup;
import androidx.constraintlayout.widget.ConstraintLayout;

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.RetentionPolicy;
@@ -60,8 +64,15 @@ public class DreamOverlayStatusBarView extends ConstraintLayout {
    public static final int STATUS_ICON_PRIORITY_MODE_ON = 6;

    private final Map<Integer, View> mStatusIcons = new HashMap<>();
    private Context mContext;
    private ViewGroup mSystemStatusViewGroup;
    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) {
        this(context, null);
@@ -73,6 +84,7 @@ public class DreamOverlayStatusBarView extends ConstraintLayout {

    public DreamOverlayStatusBarView(Context context, AttributeSet attrs, int defStyleAttr) {
        this(context, attrs, defStyleAttr, 0);
        mContext = context;
    }

    public DreamOverlayStatusBarView(
@@ -80,14 +92,36 @@ public class DreamOverlayStatusBarView extends ConstraintLayout {
        super(context, attrs, defStyleAttr, defStyleRes);
    }


    @Override
    protected void 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,
                fetchStatusIconForResId(R.id.dream_overlay_wifi_status));
                addDoubleShadow(fetchStatusIconForResId(R.id.dream_overlay_wifi_status)));
        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,
                fetchStatusIconForResId(R.id.dream_overlay_camera_off));
        mStatusIcons.put(STATUS_ICON_MIC_DISABLED,
@@ -97,7 +131,7 @@ public class DreamOverlayStatusBarView extends ConstraintLayout {
        mStatusIcons.put(STATUS_ICON_NOTIFICATIONS,
                fetchStatusIconForResId(R.id.dream_overlay_notification_indicator));
        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);
        mExtraSystemStatusViewGroup = findViewById(R.id.dream_overlay_extra_items);
@@ -137,4 +171,34 @@ public class DreamOverlayStatusBarView extends ConstraintLayout {
        }
        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);
    }
}