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);