Merge "Import translations. DO NOT MERGE" into ub-launcher3-master
diff --git a/res/values/colors.xml b/res/values/colors.xml
index a7b507c..19bf51a 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -52,4 +52,5 @@
<color name="fallback_secondary_color">#FF37474F</color>
<color name="notification_icon_default_color">#757575</color> <!-- Gray 600 -->
+ <color name="legacy_icon_background">#FFE0E0E0</color>
</resources>
diff --git a/src/com/android/launcher3/graphics/LauncherIcons.java b/src/com/android/launcher3/graphics/LauncherIcons.java
index 2ae7a4a..472b913 100644
--- a/src/com/android/launcher3/graphics/LauncherIcons.java
+++ b/src/com/android/launcher3/graphics/LauncherIcons.java
@@ -29,10 +29,13 @@
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.PaintDrawable;
+import android.graphics.drawable.ScaleDrawable;
import android.os.Process;
import android.os.UserHandle;
+import android.view.Gravity;
import com.android.launcher3.AppInfo;
import com.android.launcher3.IconCache;
@@ -45,12 +48,12 @@
import com.android.launcher3.shortcuts.DeepShortcutManager;
import com.android.launcher3.shortcuts.ShortcutInfoCompat;
-import java.lang.reflect.Method;
-
/**
* Helper methods for generating various launcher icons
*/
public class LauncherIcons {
+ // TODO b/33553066 use the constant defined in MaskableIconDrawable
+ private static final float LEGACY_ICON_SCALE = .7f * .6667f;
private static final Rect sOldBounds = new Rect();
private static final Canvas sCanvas = new Canvas();
@@ -168,7 +171,7 @@
* @param scale the scale to apply before drawing {@param icon} on the canvas
*/
public static Bitmap createIconBitmap(Drawable icon, Context context, float scale) {
- icon = castToMaskableIconDrawable(icon);
+ icon = wrapToMaskableIconDrawable(context, icon);
synchronized (sCanvas) {
final int iconBitmapSize = LauncherAppState.getIDP(context).iconBitmapSize;
@@ -224,17 +227,31 @@
}
}
- static Drawable castToMaskableIconDrawable(Drawable drawable) {
+ /**
+ * If the platform is running O but the app is not providing MaskableIconDrawable, then
+ * shrink the legacy icon and set it as foreground. Use color drawable as background to
+ * create MaskableIconDrawable.
+ */
+ static Drawable wrapToMaskableIconDrawable(Context context, Drawable drawable) {
if (!(ProviderConfig.IS_DOGFOOD_BUILD && Utilities.isAtLeastO())) {
return drawable;
}
+ int color = context.getResources().getColor(R.color.legacy_icon_background);
+ ColorDrawable colorDrawable = new ColorDrawable(color);
+ ScaleDrawable scaleDrawable = new ScaleDrawable(drawable,
+ Gravity.CENTER, LEGACY_ICON_SCALE, LEGACY_ICON_SCALE);
+ scaleDrawable.setLevel(1);
try {
Class clazz = Class.forName("android.graphics.drawable.MaskableIconDrawable");
- Method method = clazz.getDeclaredMethod("wrap", Drawable.class);
- return (Drawable) method.invoke(null, drawable);
+ if (!clazz.isAssignableFrom(drawable.getClass())){
+
+ return (Drawable) clazz.getConstructor(Drawable.class, Drawable.class)
+ .newInstance(colorDrawable, scaleDrawable);
+ }
} catch (Exception e) {
return drawable;
}
+ return drawable;
}
public static Bitmap createShortcutIcon(ShortcutInfoCompat shortcutInfo, Context context) {
diff --git a/src/com/android/launcher3/util/SQLiteCacheHelper.java b/src/com/android/launcher3/util/SQLiteCacheHelper.java
index d1cfe42..9aabfeb 100644
--- a/src/com/android/launcher3/util/SQLiteCacheHelper.java
+++ b/src/com/android/launcher3/util/SQLiteCacheHelper.java
@@ -9,6 +9,9 @@
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
+import com.android.launcher3.Utilities;
+import com.android.launcher3.config.ProviderConfig;
+
/**
* An extension of {@link SQLiteOpenHelper} with utility methods for a single table cache DB.
* Any exception during write operations are ignored, and any version change causes a DB reset.
@@ -16,12 +19,18 @@
public abstract class SQLiteCacheHelper {
private static final String TAG = "SQLiteCacheHelper";
+ private static final boolean NO_ICON_CACHE = ProviderConfig.IS_DOGFOOD_BUILD &&
+ Utilities.isPropertyEnabled("MEMORY_ONLY_ICON_CACHE");
+
private final String mTableName;
private final MySQLiteOpenHelper mOpenHelper;
private boolean mIgnoreWrites;
public SQLiteCacheHelper(Context context, String name, int version, String tableName) {
+ if (NO_ICON_CACHE) {
+ name = null;
+ }
mTableName = tableName;
mOpenHelper = new MySQLiteOpenHelper(context, name, version);