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