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

Commit 3e7592d0 authored by Selim Cinek's avatar Selim Cinek
Browse files

Fixed a few issues when adapting the dpi

The statusbar is now behaving nicer and other
parts are behaving similar as if they had been inflated
that way. The signalclusterview is now properly recreated
ensuring that it's scaled correclty.

Fixes: 	26844819
Change-Id: Id1aab629204d03c079815358e7a5eb12d2a4e557
parent e803491c
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
<!-- extends LinearLayout -->
<com.android.systemui.statusbar.SignalClusterView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/signal_cluster"
    android:layout_height="match_parent"
    android:layout_width="wrap_content"
    android:gravity="center_vertical"
+0 −1
Original line number Diff line number Diff line
@@ -27,7 +27,6 @@
        android:orientation="horizontal"/>

    <include layout="@layout/signal_cluster_view"
        android:id="@+id/signal_cluster"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="@dimen/signal_cluster_margin_start"/>
+2 −2
Original line number Diff line number Diff line
@@ -910,7 +910,7 @@ public abstract class BaseStatusBar extends SystemUI implements
        final float fontScale = newConfig.fontScale;
        final int density = newConfig.densityDpi;
        if (density != mDensity || mFontScale != fontScale) {
            reInflateViews();
            onDensityOrFontScaleChanged();
            mDensity = density;
            mFontScale = fontScale;
        }
@@ -926,7 +926,7 @@ public abstract class BaseStatusBar extends SystemUI implements
        }
    }

    protected void reInflateViews() {
    protected void onDensityOrFontScaleChanged() {
        ArrayList<Entry> activeNotifications = mNotificationData.getActiveNotifications();
        for (int i = 0; i < activeNotifications.size(); i++) {
            Entry entry = activeNotifications.get(i);
+32 −14
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.statusbar;

import android.app.Notification;
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.Paint;
@@ -39,6 +40,7 @@ import java.text.NumberFormat;

public class StatusBarIconView extends AnimatedImageView {
    private static final String TAG = "StatusBarIconView";
    private boolean mAlwaysScaleIcon;

    private StatusBarIcon mIcon;
    @ViewDebug.ExportedProperty private String mSlot;
@@ -49,6 +51,7 @@ public class StatusBarIconView extends AnimatedImageView {
    private String mNumberText;
    private Notification mNotification;
    private final boolean mBlocked;
    private int mDensity;

    public StatusBarIconView(Context context, String slot, Notification notification) {
        this(context, slot, notification, false);
@@ -57,7 +60,6 @@ public class StatusBarIconView extends AnimatedImageView {
    public StatusBarIconView(Context context, String slot, Notification notification,
            boolean blocked) {
        super(context);
        final Resources res = context.getResources();
        mBlocked = blocked;
        mSlot = slot;
        mNumberPain = new Paint();
@@ -65,10 +67,21 @@ public class StatusBarIconView extends AnimatedImageView {
        mNumberPain.setColor(context.getColor(R.drawable.notification_number_text_color));
        mNumberPain.setAntiAlias(true);
        setNotification(notification);
        maybeUpdateIconScale();
        setScaleType(ScaleType.CENTER);
        mDensity = context.getResources().getDisplayMetrics().densityDpi;
    }

    private void maybeUpdateIconScale() {
        // We do not resize and scale system icons (on the right), only notification icons (on the
        // left).
        if (notification != null) {
        if (mNotification != null || mAlwaysScaleIcon) {
            updateIconScale();
        }
    }

    private void updateIconScale() {
        Resources res = mContext.getResources();
        final int outerBounds = res.getDimensionPixelSize(R.dimen.status_bar_icon_size);
        final int imageBounds = res.getDimensionPixelSize(R.dimen.status_bar_icon_drawing_size);
        final float scale = (float)imageBounds / (float)outerBounds;
@@ -76,7 +89,15 @@ public class StatusBarIconView extends AnimatedImageView {
        setScaleY(scale);
    }

        setScaleType(ScaleType.CENTER);
    @Override
    protected void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        int density = newConfig.densityDpi;
        if (density != mDensity) {
            mDensity = density;
            maybeUpdateIconScale();
            updateDrawable();
        }
    }

    public void setNotification(Notification notification) {
@@ -87,12 +108,9 @@ public class StatusBarIconView extends AnimatedImageView {
    public StatusBarIconView(Context context, AttributeSet attrs) {
        super(context, attrs);
        mBlocked = false;
        final Resources res = context.getResources();
        final int outerBounds = res.getDimensionPixelSize(R.dimen.status_bar_icon_size);
        final int imageBounds = res.getDimensionPixelSize(R.dimen.status_bar_icon_drawing_size);
        final float scale = (float)imageBounds / (float)outerBounds;
        setScaleX(scale);
        setScaleY(scale);
        mAlwaysScaleIcon = true;
        updateIconScale();
        mDensity = context.getResources().getDisplayMetrics().densityDpi;
    }

    private static boolean streq(String a, String b) {
+15 −6
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.statusbar.phone;

import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.util.AttributeSet;
import android.view.View;
@@ -28,21 +29,29 @@ public class IconMerger extends LinearLayout {
    private static final String TAG = "IconMerger";
    private static final boolean DEBUG = false;

    private final int mIconSize;
    private final int mIconHPadding;
    private int mIconSize;
    private int mIconHPadding;

    private View mMoreView;

    public IconMerger(Context context, AttributeSet attrs) {
        super(context, attrs);
        reloadDimens();
        if (DEBUG) {
            setBackgroundColor(0x800099FF);
        }
    }

        Resources res = context.getResources();
    private void reloadDimens() {
        Resources res = mContext.getResources();
        mIconSize = res.getDimensionPixelSize(R.dimen.status_bar_icon_size);
        mIconHPadding = res.getDimensionPixelSize(R.dimen.status_bar_icon_padding);

        if (DEBUG) {
            setBackgroundColor(0x800099FF);
    }

    @Override
    protected void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        reloadDimens();
    }

    public void setOverflowIndicator(View v) {
Loading