OSDN Git Service

Resizing the bitmap before caching it in the DB
authorSunny Goyal <sunnygoyal@google.com>
Mon, 20 Jul 2015 21:32:48 +0000 (14:32 -0700)
committerSunny Goyal <sunnygoyal@google.com>
Mon, 20 Jul 2015 21:34:30 +0000 (14:34 -0700)
> The icon size in the backup can be different that what is
  required by the device. We should resize the icon, before
  caching it.

Bug: 22413328
Change-Id: Id77c53edf8ea5e95a2d32dbe22be553120279ebd

src/com/android/launcher3/IconCache.java
src/com/android/launcher3/LauncherBackupHelper.java

index 916418f..b4ca515 100644 (file)
@@ -649,7 +649,7 @@ public class IconCache {
      * @param dpi the native density of the icon
      */
     public void preloadIcon(ComponentName componentName, Bitmap icon, int dpi, String label,
-            long userSerial) {
+            long userSerial, InvariantDeviceProfile idp) {
         // TODO rescale to the correct native DPI
         try {
             PackageManager packageManager = mContext.getPackageManager();
@@ -660,7 +660,9 @@ public class IconCache {
             // pass
         }
 
-        ContentValues values = newContentValues(icon, label, Color.TRANSPARENT);
+        ContentValues values = newContentValues(
+                Bitmap.createScaledBitmap(icon, idp.iconBitmapSize, idp.iconBitmapSize, true),
+                label, Color.TRANSPARENT);
         values.put(IconDB.COLUMN_COMPONENT, componentName.flattenToString());
         values.put(IconDB.COLUMN_USER, userSerial);
         mIconDb.getWritableDatabase().insertWithOnConflict(IconDB.TABLE_NAME, null, values,
index 8c6fedb..744f73b 100644 (file)
@@ -601,10 +601,11 @@ public class LauncherBackupHelper implements BackupHelper {
         Bitmap icon = BitmapFactory.decodeByteArray(res.data, 0, res.data.length);
         if (icon == null) {
             Log.w(TAG, "failed to unpack icon for " + key.name);
+        } else {
+            if (VERBOSE) Log.v(TAG, "saving restored icon as: " + key.name);
+            mIconCache.preloadIcon(ComponentName.unflattenFromString(key.name), icon, res.dpi,
+                    "" /* label */, mUserSerial, mIdp);
         }
-        if (VERBOSE) Log.v(TAG, "saving restored icon as: " + key.name);
-        mIconCache.preloadIcon(ComponentName.unflattenFromString(key.name), icon, res.dpi,
-                "" /* label */, mUserSerial);
     }
 
     /**
@@ -685,7 +686,7 @@ public class LauncherBackupHelper implements BackupHelper {
                 Log.w(TAG, "failed to unpack widget icon for " + key.name);
             } else {
                 mIconCache.preloadIcon(ComponentName.unflattenFromString(widget.provider),
-                        icon, widget.icon.dpi, widget.label, mUserSerial);
+                        icon, widget.icon.dpi, widget.label, mUserSerial, mIdp);
             }
         }