diff --git a/res/drawable-hdpi/widget_container_holo.9.png b/res/drawable-hdpi/widget_container_holo.9.png
new file mode 100644
index 0000000000..8c15a7c86e
Binary files /dev/null and b/res/drawable-hdpi/widget_container_holo.9.png differ
diff --git a/res/drawable-hdpi/widget_preview_tile.png b/res/drawable-hdpi/widget_preview_tile.png
new file mode 100644
index 0000000000..caeddd1ceb
Binary files /dev/null and b/res/drawable-hdpi/widget_preview_tile.png differ
diff --git a/res/drawable-mdpi/widget_container_holo.9.png b/res/drawable-mdpi/widget_container_holo.9.png
new file mode 100644
index 0000000000..db24457d68
Binary files /dev/null and b/res/drawable-mdpi/widget_container_holo.9.png differ
diff --git a/res/drawable-mdpi/widget_preview_tile.png b/res/drawable-mdpi/widget_preview_tile.png
new file mode 100644
index 0000000000..9c7c4f77cc
Binary files /dev/null and b/res/drawable-mdpi/widget_preview_tile.png differ
diff --git a/res/drawable-xhdpi/widget_container_holo.9.png b/res/drawable-xhdpi/widget_container_holo.9.png
new file mode 100644
index 0000000000..1313fe70dc
Binary files /dev/null and b/res/drawable-xhdpi/widget_container_holo.9.png differ
diff --git a/res/drawable-xhdpi/widget_preview_tile.png b/res/drawable-xhdpi/widget_preview_tile.png
new file mode 100644
index 0000000000..60238671e5
Binary files /dev/null and b/res/drawable-xhdpi/widget_preview_tile.png differ
diff --git a/res/layout-land/apps_customize_application.xml b/res/layout-land/apps_customize_application.xml
index bface6b7de..ba95b27a65 100644
--- a/res/layout-land/apps_customize_application.xml
+++ b/res/layout-land/apps_customize_application.xml
@@ -25,8 +25,5 @@
android:layout_height="match_parent"
android:gravity="center_horizontal"
- launcher:blurColor="#FF6B8CF0"
- launcher:outlineColor="#FF8CD2FF"
-
android:focusable="true"
android:background="@drawable/focusable_view_bg" />
diff --git a/res/layout-port/apps_customize_application.xml b/res/layout-port/apps_customize_application.xml
index 37b41851f8..84a8712d77 100644
--- a/res/layout-port/apps_customize_application.xml
+++ b/res/layout-port/apps_customize_application.xml
@@ -25,8 +25,5 @@
android:layout_height="match_parent"
android:gravity="center_horizontal"
- launcher:blurColor="#FF6B8CF0"
- launcher:outlineColor="#FF8CD2FF"
-
android:focusable="true"
android:background="@drawable/focusable_view_bg" />
diff --git a/res/layout/apps_customize_widget.xml b/res/layout/apps_customize_widget.xml
index 90883c51c5..abb7508b5b 100644
--- a/res/layout/apps_customize_widget.xml
+++ b/res/layout/apps_customize_widget.xml
@@ -22,16 +22,27 @@
android:layout_weight="1"
android:orientation="vertical"
- launcher:blurColor="#FF6B8CF0"
- launcher:outlineColor="#FF8CD2FF"
-
android:background="@drawable/focusable_view_bg"
android:focusable="true">
+
+
+
-
-
+
diff --git a/res/values-sw600dp/dimens.xml b/res/values-sw600dp/dimens.xml
index 99e8909661..bb6cbc953d 100644
--- a/res/values-sw600dp/dimens.xml
+++ b/res/values-sw600dp/dimens.xml
@@ -61,7 +61,9 @@
8dp
20dp
24dp
-
+ 8dp
+ @dimen/app_widget_preview_padding_left
+ @dimen/app_widget_preview_padding_right
88dp
96dp
diff --git a/res/values-sw720dp/dimens.xml b/res/values-sw720dp/dimens.xml
index cfd76dce00..7daccd0796 100644
--- a/res/values-sw720dp/dimens.xml
+++ b/res/values-sw720dp/dimens.xml
@@ -40,9 +40,6 @@
96dp
-1
-1
- 0dp
- 10dp
-
4dip
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index cd939db0fc..224daac535 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -93,24 +93,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index e789fdf33f..7cc89602f2 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -105,9 +105,18 @@
should be. If 0, it will not be scaled at all. -->
12dp
-
- 8dp
- 8dp
+
+ 16dp
+ 16dp
+ 32dp
+ 4dp
+ 2dp
+ 2dp
+
+
+ 0dp
+ 0dp
+ 0dp
diff --git a/src/com/android/launcher2/AppsCustomizePagedView.java b/src/com/android/launcher2/AppsCustomizePagedView.java
index 5e0d43dcc1..67def1794f 100644
--- a/src/com/android/launcher2/AppsCustomizePagedView.java
+++ b/src/com/android/launcher2/AppsCustomizePagedView.java
@@ -33,12 +33,18 @@ import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
+import android.graphics.ColorMatrix;
+import android.graphics.ColorMatrixColorFilter;
+import android.graphics.Insets;
import android.graphics.MaskFilter;
import android.graphics.Matrix;
import android.graphics.Paint;
+import android.graphics.PorterDuff;
import android.graphics.Rect;
import android.graphics.RectF;
+import android.graphics.Shader;
import android.graphics.TableMaskFilter;
+import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.os.Process;
@@ -54,6 +60,7 @@ import android.view.animation.AccelerateInterpolator;
import android.view.animation.DecelerateInterpolator;
import android.widget.GridLayout;
import android.widget.ImageView;
+import android.widget.LinearLayout;
import android.widget.Toast;
import com.android.launcher.R;
@@ -63,6 +70,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
+import java.lang.ref.WeakReference;
/**
* A simple callback interface which also provides the results of the task.
@@ -163,6 +171,64 @@ class AppsCustomizeAsyncTask extends AsyncTask {
+ private ThreadLocal> mThreadLocal;
+ public WeakReferenceThreadLocal() {
+ mThreadLocal = new ThreadLocal>();
+ }
+
+ abstract T initialValue();
+
+ public void set(T t) {
+ mThreadLocal.set(new WeakReference(t));
+ }
+
+ public T get() {
+ WeakReference reference = mThreadLocal.get();
+ T obj;
+ if (reference == null) {
+ obj = initialValue();
+ mThreadLocal.set(new WeakReference(obj));
+ return obj;
+ } else {
+ obj = reference.get();
+ if (obj == null) {
+ obj = initialValue();
+ mThreadLocal.set(new WeakReference(obj));
+ }
+ return obj;
+ }
+ }
+}
+
+class CanvasCache extends WeakReferenceThreadLocal