From 24827d35b1af3523a98f1d24e09945e623ca8f16 Mon Sep 17 00:00:00 2001 From: clownshen Date: Fri, 29 Mar 2019 20:22:02 +0800 Subject: [PATCH] Enlarge wifi signal icon from 24dp to 32dp for header view Bug: 129413562 Test: manual test Change-Id: I50a27ac25e5ae42530736bb7c019485a51d707ba --- res/values/dimens.xml | 1 + src/com/android/settings/Utils.java | 5 +++- .../WifiDetailPreferenceController.java | 25 +++++++++++++++++-- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 60724c31fbb..7d5ca662e1d 100755 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -176,6 +176,7 @@ 1px 16dp + 32dp 16dp diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java index 36230d17dca..0938c0978e3 100644 --- a/src/com/android/settings/Utils.java +++ b/src/com/android/settings/Utils.java @@ -977,7 +977,10 @@ public final class Utils extends com.android.settingslib.Utils { return IconCompat.createWithBitmap(bitmap); } - private static Bitmap createBitmap(Drawable drawable, int width, int height) { + /** + * Creates a drawable with specified width and height. + */ + public static Bitmap createBitmap(Drawable drawable, int width, int height) { final Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); final Canvas canvas = new Canvas(bitmap); drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); diff --git a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java index 92132e82d7c..eb67870d6e1 100644 --- a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java +++ b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java @@ -27,7 +27,10 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.graphics.Bitmap; +import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; +import android.graphics.drawable.VectorDrawable; import android.net.ConnectivityManager; import android.net.ConnectivityManager.NetworkCallback; import android.net.LinkAddress; @@ -595,8 +598,9 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController wifiIcon.setTintList(Utils.getColorAccent(mContext)); if (mEntityHeaderController != null) { - mEntityHeaderController.setIcon(wifiIcon).done(mFragment.getActivity(), - true /* rebind */); + mEntityHeaderController + .setIcon(rescaleIconForHeader(wifiIcon)).done(mFragment.getActivity(), + true /* rebind */); } Drawable wifiIconDark = wifiIcon.getConstantState().newDrawable().mutate(); @@ -607,6 +611,23 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController mSignalStrengthPref.setVisible(true); } + private Drawable rescaleIconForHeader(Drawable original) { + final int iconSize = mContext.getResources().getDimensionPixelSize( + R.dimen.wifi_detail_page_header_image_size); + final int actualWidth = original.getMinimumWidth(); + final int actualHeight = original.getMinimumHeight(); + + if ((actualWidth == iconSize && actualHeight == iconSize) + || !VectorDrawable.class.isInstance(original)) { + return original; + } + + final Bitmap bitmap = Utils.createBitmap(original, + iconSize /*width*/, + iconSize /*height*/); + return new BitmapDrawable(null /*resource*/, bitmap); + } + private void refreshFrequency() { if (mWifiInfo == null) { mFrequencyPref.setVisible(false);