summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AndroidManifest.xml3
-rw-r--r--CleanSpec.mk2
-rw-r--r--res/drawable-hdpi/widget_container_holo.9.pngbin0 -> 369 bytes
-rw-r--r--res/drawable-hdpi/widget_preview_tile.pngbin0 -> 548 bytes
-rw-r--r--res/drawable-mdpi/widget_container_holo.9.pngbin0 -> 285 bytes
-rw-r--r--res/drawable-mdpi/widget_preview_tile.pngbin0 -> 406 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_01.jpgbin0 -> 42815 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_01_small.jpgbin0 -> 34136 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_02.jpgbin0 -> 107845 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_02_small.jpgbin0 -> 61216 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_03.jpgbin0 -> 125468 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_03_small.jpgbin0 -> 49183 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_04.jpgbin0 -> 65203 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_04_small.jpgbin0 -> 48643 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_05.jpgbin0 -> 163655 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_05_small.jpgbin0 -> 11740 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_08.jpgbin0 -> 192445 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_08_small.jpgbin0 -> 72038 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_09.jpgbin0 -> 169107 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_09_small.jpgbin0 -> 24809 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_10.jpgbin0 -> 119627 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_10_small.jpgbin0 -> 44627 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_11.jpgbin0 -> 107401 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_11_small.jpgbin0 -> 32184 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_12.jpgbin0 -> 79508 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_12_small.jpgbin0 -> 50652 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_architecture.jpgbin169117 -> 0 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_bubblegum.jpgbin96727 -> 0 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_canyon.jpgbin151076 -> 0 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_chroma.jpgbin81201 -> 0 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_escape.jpgbin79499 -> 0 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_fidelity.jpgbin123909 -> 0 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_flora.jpgbin64041 -> 0 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_kepler.jpgbin129335 -> 0 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_leaf.jpgbin210761 -> 0 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_noir.jpgbin162274 -> 0 bytes
-rw-r--r--res/drawable-nodpi/wallpaper_outofthebox.jpgbin115326 -> 0 bytes
-rw-r--r--res/drawable-sw600dp-nodpi/wallpaper_01.jpgbin0 -> 1339456 bytes
-rw-r--r--res/drawable-sw600dp-nodpi/wallpaper_02.jpgbin0 -> 1324102 bytes
-rw-r--r--res/drawable-sw600dp-nodpi/wallpaper_03.jpgbin0 -> 170592 bytes
-rw-r--r--res/drawable-sw600dp-nodpi/wallpaper_04.jpgbin0 -> 638501 bytes
-rw-r--r--res/drawable-sw600dp-nodpi/wallpaper_05.jpgbin0 -> 406799 bytes
-rw-r--r--res/drawable-sw600dp-nodpi/wallpaper_08.jpgbin0 -> 221827 bytes
-rw-r--r--res/drawable-sw600dp-nodpi/wallpaper_09.jpgbin0 -> 125461 bytes
-rw-r--r--res/drawable-sw600dp-nodpi/wallpaper_10.jpgbin0 -> 93331 bytes
-rw-r--r--res/drawable-sw600dp-nodpi/wallpaper_11.jpgbin0 -> 83448 bytes
-rw-r--r--res/drawable-sw600dp-nodpi/wallpaper_12.jpgbin0 -> 68365 bytes
-rw-r--r--res/drawable-sw600dp-nodpi/wallpaper_architecture_small.jpgbin13626 -> 0 bytes
-rw-r--r--res/drawable-sw600dp-nodpi/wallpaper_bubblegum_small.jpgbin12800 -> 0 bytes
-rw-r--r--res/drawable-sw600dp-nodpi/wallpaper_canyon_small.jpgbin14004 -> 0 bytes
-rw-r--r--res/drawable-sw600dp-nodpi/wallpaper_chroma_small.jpgbin7365 -> 0 bytes
-rw-r--r--res/drawable-sw600dp-nodpi/wallpaper_escape_small.jpgbin10012 -> 0 bytes
-rw-r--r--res/drawable-sw600dp-nodpi/wallpaper_fidelity_small.jpgbin13986 -> 0 bytes
-rw-r--r--res/drawable-sw600dp-nodpi/wallpaper_flora_small.jpgbin6537 -> 0 bytes
-rw-r--r--res/drawable-sw600dp-nodpi/wallpaper_kepler_small.jpgbin14451 -> 0 bytes
-rw-r--r--res/drawable-sw600dp-nodpi/wallpaper_leaf_small.jpgbin16071 -> 0 bytes
-rw-r--r--res/drawable-sw600dp-nodpi/wallpaper_noir_small.jpgbin12412 -> 0 bytes
-rw-r--r--res/drawable-sw600dp-nodpi/wallpaper_outofthebox_small.jpgbin12834 -> 0 bytes
-rw-r--r--res/drawable-sw720dp-nodpi/wallpaper_architecture.jpg (renamed from res/drawable-sw600dp-nodpi/wallpaper_architecture.jpg)bin705174 -> 705174 bytes
-rw-r--r--res/drawable-sw720dp-nodpi/wallpaper_architecture_small.jpg (renamed from res/drawable-nodpi/wallpaper_architecture_small.jpg)bin13626 -> 13626 bytes
-rw-r--r--res/drawable-sw720dp-nodpi/wallpaper_bubblegum.jpg (renamed from res/drawable-sw600dp-nodpi/wallpaper_bubblegum.jpg)bin310909 -> 310909 bytes
-rw-r--r--res/drawable-sw720dp-nodpi/wallpaper_bubblegum_small.jpg (renamed from res/drawable-nodpi/wallpaper_bubblegum_small.jpg)bin12800 -> 12800 bytes
-rw-r--r--res/drawable-sw720dp-nodpi/wallpaper_canyon.jpg (renamed from res/drawable-sw600dp-nodpi/wallpaper_canyon.jpg)bin620816 -> 620816 bytes
-rw-r--r--res/drawable-sw720dp-nodpi/wallpaper_canyon_small.jpg (renamed from res/drawable-nodpi/wallpaper_canyon_small.jpg)bin14004 -> 14004 bytes
-rw-r--r--res/drawable-sw720dp-nodpi/wallpaper_chroma.jpg (renamed from res/drawable-sw600dp-nodpi/wallpaper_chroma.jpg)bin273356 -> 273356 bytes
-rw-r--r--res/drawable-sw720dp-nodpi/wallpaper_chroma_small.jpg (renamed from res/drawable-nodpi/wallpaper_chroma_small.jpg)bin7365 -> 7365 bytes
-rw-r--r--res/drawable-sw720dp-nodpi/wallpaper_escape.jpg (renamed from res/drawable-sw600dp-nodpi/wallpaper_escape.jpg)bin300867 -> 300867 bytes
-rw-r--r--res/drawable-sw720dp-nodpi/wallpaper_escape_small.jpg (renamed from res/drawable-nodpi/wallpaper_escape_small.jpg)bin10012 -> 10012 bytes
-rw-r--r--res/drawable-sw720dp-nodpi/wallpaper_fidelity.jpg (renamed from res/drawable-sw600dp-nodpi/wallpaper_fidelity.jpg)bin534777 -> 534777 bytes
-rw-r--r--res/drawable-sw720dp-nodpi/wallpaper_fidelity_small.jpg (renamed from res/drawable-nodpi/wallpaper_fidelity_small.jpg)bin13986 -> 13986 bytes
-rw-r--r--res/drawable-sw720dp-nodpi/wallpaper_flora.jpg (renamed from res/drawable-sw600dp-nodpi/wallpaper_flora.jpg)bin216166 -> 216166 bytes
-rw-r--r--res/drawable-sw720dp-nodpi/wallpaper_flora_small.jpg (renamed from res/drawable-nodpi/wallpaper_flora_small.jpg)bin6537 -> 6537 bytes
-rw-r--r--res/drawable-sw720dp-nodpi/wallpaper_kepler.jpg (renamed from res/drawable-sw600dp-nodpi/wallpaper_kepler.jpg)bin558982 -> 558982 bytes
-rw-r--r--res/drawable-sw720dp-nodpi/wallpaper_kepler_small.jpg (renamed from res/drawable-nodpi/wallpaper_kepler_small.jpg)bin14451 -> 14451 bytes
-rw-r--r--res/drawable-sw720dp-nodpi/wallpaper_leaf.jpg (renamed from res/drawable-sw600dp-nodpi/wallpaper_leaf.jpg)bin796555 -> 796555 bytes
-rw-r--r--res/drawable-sw720dp-nodpi/wallpaper_leaf_small.jpg (renamed from res/drawable-nodpi/wallpaper_leaf_small.jpg)bin16071 -> 16071 bytes
-rw-r--r--res/drawable-sw720dp-nodpi/wallpaper_noir.jpg (renamed from res/drawable-sw600dp-nodpi/wallpaper_noir.jpg)bin608479 -> 608479 bytes
-rw-r--r--res/drawable-sw720dp-nodpi/wallpaper_noir_small.jpg (renamed from res/drawable-nodpi/wallpaper_noir_small.jpg)bin12412 -> 12412 bytes
-rw-r--r--res/drawable-sw720dp-nodpi/wallpaper_outofthebox.jpg (renamed from res/drawable-sw600dp-nodpi/wallpaper_outofthebox.jpg)bin300281 -> 300281 bytes
-rw-r--r--res/drawable-sw720dp-nodpi/wallpaper_outofthebox_small.jpg (renamed from res/drawable-nodpi/wallpaper_outofthebox_small.jpg)bin12834 -> 12834 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_01.jpgbin0 -> 87482 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_02.jpgbin0 -> 190641 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_03.jpgbin0 -> 384635 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_04.jpgbin0 -> 136052 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_05.jpgbin0 -> 110616 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_08.jpgbin0 -> 379512 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_09.jpgbin0 -> 416188 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_10.jpgbin0 -> 253029 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_11.jpgbin0 -> 247216 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_12.jpgbin0 -> 168993 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_architecture.jpgbin803412 -> 0 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_architecture_small.jpgbin13626 -> 0 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_bubblegum.jpgbin218662 -> 0 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_bubblegum_small.jpgbin12800 -> 0 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_canyon.jpgbin247034 -> 0 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_canyon_small.jpgbin14004 -> 0 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_chroma.jpgbin265741 -> 0 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_chroma_small.jpgbin7365 -> 0 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_escape.jpgbin67414 -> 0 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_escape_small.jpgbin10012 -> 0 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_fidelity.jpgbin243810 -> 0 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_fidelity_small.jpgbin13986 -> 0 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_flora.jpgbin155793 -> 0 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_flora_small.jpgbin6537 -> 0 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_kepler.jpgbin187949 -> 0 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_kepler_small.jpgbin14451 -> 0 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_leaf.jpgbin600488 -> 0 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_leaf_small.jpgbin16071 -> 0 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_noir.jpgbin346050 -> 0 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_noir_small.jpgbin12412 -> 0 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_outofthebox.jpgbin127032 -> 0 bytes
-rw-r--r--res/drawable-xhdpi/wallpaper_outofthebox_small.jpgbin12834 -> 0 bytes
-rw-r--r--res/drawable-xhdpi/widget_container_holo.9.pngbin0 -> 460 bytes
-rw-r--r--res/drawable-xhdpi/widget_preview_tile.pngbin0 -> 615 bytes
-rw-r--r--res/layout-land/apps_customize_application.xml3
-rw-r--r--res/layout-land/drop_target_bar.xml2
-rw-r--r--res/layout-land/launcher.xml10
-rw-r--r--res/layout-port/apps_customize_application.xml3
-rw-r--r--res/layout-port/launcher.xml4
-rw-r--r--res/layout/apps_customize_widget.xml29
-rw-r--r--res/values-sw600dp-land/dimens.xml6
-rw-r--r--res/values-sw600dp/dimens.xml4
-rw-r--r--res/values-sw720dp/dimens.xml3
-rw-r--r--res/values/attrs.xml18
-rw-r--r--res/values/dimens.xml15
-rw-r--r--res/values/wallpapers.xml23
-rw-r--r--src/com/android/launcher2/AppsCustomizePagedView.java266
-rw-r--r--src/com/android/launcher2/CellLayout.java82
-rw-r--r--src/com/android/launcher2/Cling.java37
-rw-r--r--src/com/android/launcher2/IconCache.java10
-rw-r--r--src/com/android/launcher2/Launcher.java19
-rw-r--r--src/com/android/launcher2/PagedViewWidget.java16
-rw-r--r--src/com/android/launcher2/PagedViewWidgetImageView.java20
-rw-r--r--src/com/android/launcher2/PendingAddItemInfo.java10
-rw-r--r--src/com/android/launcher2/Workspace.java16
135 files changed, 418 insertions, 183 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 47278bb83..20c4a9dae 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -57,6 +57,7 @@
<uses-permission android:name="android.permission.SET_WALLPAPER_HINTS" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.BIND_APPWIDGET" />
+ <uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="com.android.launcher.permission.WRITE_SETTINGS" />
@@ -73,7 +74,7 @@
android:stateNotNeeded="true"
android:theme="@style/Theme"
android:windowSoftInputMode="adjustPan"
- android:screenOrientation="nosensor">
+ android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME" />
diff --git a/CleanSpec.mk b/CleanSpec.mk
index e85182054..c1323951b 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -48,6 +48,8 @@ $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/Launcher2_interm
$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/Launcher2_intermediates)
$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/Launcher2_intermediates)
$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/Launcher2_intermediates)
+$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/Launcher2_intermediates)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/app/Launcher2.apk)
# ************************************************
# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
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 000000000..8c15a7c86
--- /dev/null
+++ b/res/drawable-hdpi/widget_container_holo.9.png
Binary files differ
diff --git a/res/drawable-hdpi/widget_preview_tile.png b/res/drawable-hdpi/widget_preview_tile.png
new file mode 100644
index 000000000..caeddd1ce
--- /dev/null
+++ b/res/drawable-hdpi/widget_preview_tile.png
Binary files 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 000000000..db24457d6
--- /dev/null
+++ b/res/drawable-mdpi/widget_container_holo.9.png
Binary files differ
diff --git a/res/drawable-mdpi/widget_preview_tile.png b/res/drawable-mdpi/widget_preview_tile.png
new file mode 100644
index 000000000..9c7c4f77c
--- /dev/null
+++ b/res/drawable-mdpi/widget_preview_tile.png
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_01.jpg b/res/drawable-nodpi/wallpaper_01.jpg
new file mode 100644
index 000000000..d7475b4c6
--- /dev/null
+++ b/res/drawable-nodpi/wallpaper_01.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_01_small.jpg b/res/drawable-nodpi/wallpaper_01_small.jpg
new file mode 100644
index 000000000..5cfe680c8
--- /dev/null
+++ b/res/drawable-nodpi/wallpaper_01_small.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_02.jpg b/res/drawable-nodpi/wallpaper_02.jpg
new file mode 100644
index 000000000..d9cb2178f
--- /dev/null
+++ b/res/drawable-nodpi/wallpaper_02.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_02_small.jpg b/res/drawable-nodpi/wallpaper_02_small.jpg
new file mode 100644
index 000000000..c33eafaec
--- /dev/null
+++ b/res/drawable-nodpi/wallpaper_02_small.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_03.jpg b/res/drawable-nodpi/wallpaper_03.jpg
new file mode 100644
index 000000000..136b3faff
--- /dev/null
+++ b/res/drawable-nodpi/wallpaper_03.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_03_small.jpg b/res/drawable-nodpi/wallpaper_03_small.jpg
new file mode 100644
index 000000000..6ff225470
--- /dev/null
+++ b/res/drawable-nodpi/wallpaper_03_small.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_04.jpg b/res/drawable-nodpi/wallpaper_04.jpg
new file mode 100644
index 000000000..2ca3d05ed
--- /dev/null
+++ b/res/drawable-nodpi/wallpaper_04.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_04_small.jpg b/res/drawable-nodpi/wallpaper_04_small.jpg
new file mode 100644
index 000000000..9a327526c
--- /dev/null
+++ b/res/drawable-nodpi/wallpaper_04_small.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_05.jpg b/res/drawable-nodpi/wallpaper_05.jpg
new file mode 100644
index 000000000..e0b37709b
--- /dev/null
+++ b/res/drawable-nodpi/wallpaper_05.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_05_small.jpg b/res/drawable-nodpi/wallpaper_05_small.jpg
new file mode 100644
index 000000000..2ae4a1860
--- /dev/null
+++ b/res/drawable-nodpi/wallpaper_05_small.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_08.jpg b/res/drawable-nodpi/wallpaper_08.jpg
new file mode 100644
index 000000000..0ae0eb2b7
--- /dev/null
+++ b/res/drawable-nodpi/wallpaper_08.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_08_small.jpg b/res/drawable-nodpi/wallpaper_08_small.jpg
new file mode 100644
index 000000000..1ca48ad49
--- /dev/null
+++ b/res/drawable-nodpi/wallpaper_08_small.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_09.jpg b/res/drawable-nodpi/wallpaper_09.jpg
new file mode 100644
index 000000000..c2f58459d
--- /dev/null
+++ b/res/drawable-nodpi/wallpaper_09.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_09_small.jpg b/res/drawable-nodpi/wallpaper_09_small.jpg
new file mode 100644
index 000000000..0ac47252e
--- /dev/null
+++ b/res/drawable-nodpi/wallpaper_09_small.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_10.jpg b/res/drawable-nodpi/wallpaper_10.jpg
new file mode 100644
index 000000000..7dfb66501
--- /dev/null
+++ b/res/drawable-nodpi/wallpaper_10.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_10_small.jpg b/res/drawable-nodpi/wallpaper_10_small.jpg
new file mode 100644
index 000000000..fedae8a3d
--- /dev/null
+++ b/res/drawable-nodpi/wallpaper_10_small.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_11.jpg b/res/drawable-nodpi/wallpaper_11.jpg
new file mode 100644
index 000000000..bedf16722
--- /dev/null
+++ b/res/drawable-nodpi/wallpaper_11.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_11_small.jpg b/res/drawable-nodpi/wallpaper_11_small.jpg
new file mode 100644
index 000000000..76c3f7f95
--- /dev/null
+++ b/res/drawable-nodpi/wallpaper_11_small.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_12.jpg b/res/drawable-nodpi/wallpaper_12.jpg
new file mode 100644
index 000000000..ab987f88e
--- /dev/null
+++ b/res/drawable-nodpi/wallpaper_12.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_12_small.jpg b/res/drawable-nodpi/wallpaper_12_small.jpg
new file mode 100644
index 000000000..da3fbf7da
--- /dev/null
+++ b/res/drawable-nodpi/wallpaper_12_small.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_architecture.jpg b/res/drawable-nodpi/wallpaper_architecture.jpg
deleted file mode 100644
index 82aafb748..000000000
--- a/res/drawable-nodpi/wallpaper_architecture.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_bubblegum.jpg b/res/drawable-nodpi/wallpaper_bubblegum.jpg
deleted file mode 100644
index e8a717d84..000000000
--- a/res/drawable-nodpi/wallpaper_bubblegum.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_canyon.jpg b/res/drawable-nodpi/wallpaper_canyon.jpg
deleted file mode 100644
index 85aaba46b..000000000
--- a/res/drawable-nodpi/wallpaper_canyon.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_chroma.jpg b/res/drawable-nodpi/wallpaper_chroma.jpg
deleted file mode 100644
index 7e9224380..000000000
--- a/res/drawable-nodpi/wallpaper_chroma.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_escape.jpg b/res/drawable-nodpi/wallpaper_escape.jpg
deleted file mode 100644
index ced555b50..000000000
--- a/res/drawable-nodpi/wallpaper_escape.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_fidelity.jpg b/res/drawable-nodpi/wallpaper_fidelity.jpg
deleted file mode 100644
index 1f1eb31ec..000000000
--- a/res/drawable-nodpi/wallpaper_fidelity.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_flora.jpg b/res/drawable-nodpi/wallpaper_flora.jpg
deleted file mode 100644
index 964e37c35..000000000
--- a/res/drawable-nodpi/wallpaper_flora.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_kepler.jpg b/res/drawable-nodpi/wallpaper_kepler.jpg
deleted file mode 100644
index 4afee4045..000000000
--- a/res/drawable-nodpi/wallpaper_kepler.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_leaf.jpg b/res/drawable-nodpi/wallpaper_leaf.jpg
deleted file mode 100644
index 7157ddd22..000000000
--- a/res/drawable-nodpi/wallpaper_leaf.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_noir.jpg b/res/drawable-nodpi/wallpaper_noir.jpg
deleted file mode 100644
index 196249508..000000000
--- a/res/drawable-nodpi/wallpaper_noir.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_outofthebox.jpg b/res/drawable-nodpi/wallpaper_outofthebox.jpg
deleted file mode 100644
index 6049dccc4..000000000
--- a/res/drawable-nodpi/wallpaper_outofthebox.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_01.jpg b/res/drawable-sw600dp-nodpi/wallpaper_01.jpg
new file mode 100644
index 000000000..6dd81b9bf
--- /dev/null
+++ b/res/drawable-sw600dp-nodpi/wallpaper_01.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_02.jpg b/res/drawable-sw600dp-nodpi/wallpaper_02.jpg
new file mode 100644
index 000000000..a363f0fe0
--- /dev/null
+++ b/res/drawable-sw600dp-nodpi/wallpaper_02.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_03.jpg b/res/drawable-sw600dp-nodpi/wallpaper_03.jpg
new file mode 100644
index 000000000..be8a8b73f
--- /dev/null
+++ b/res/drawable-sw600dp-nodpi/wallpaper_03.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_04.jpg b/res/drawable-sw600dp-nodpi/wallpaper_04.jpg
new file mode 100644
index 000000000..0c9e72b77
--- /dev/null
+++ b/res/drawable-sw600dp-nodpi/wallpaper_04.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_05.jpg b/res/drawable-sw600dp-nodpi/wallpaper_05.jpg
new file mode 100644
index 000000000..47013d309
--- /dev/null
+++ b/res/drawable-sw600dp-nodpi/wallpaper_05.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_08.jpg b/res/drawable-sw600dp-nodpi/wallpaper_08.jpg
new file mode 100644
index 000000000..2c3cbda6b
--- /dev/null
+++ b/res/drawable-sw600dp-nodpi/wallpaper_08.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_09.jpg b/res/drawable-sw600dp-nodpi/wallpaper_09.jpg
new file mode 100644
index 000000000..885ec355b
--- /dev/null
+++ b/res/drawable-sw600dp-nodpi/wallpaper_09.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_10.jpg b/res/drawable-sw600dp-nodpi/wallpaper_10.jpg
new file mode 100644
index 000000000..695808f33
--- /dev/null
+++ b/res/drawable-sw600dp-nodpi/wallpaper_10.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_11.jpg b/res/drawable-sw600dp-nodpi/wallpaper_11.jpg
new file mode 100644
index 000000000..94cc5401e
--- /dev/null
+++ b/res/drawable-sw600dp-nodpi/wallpaper_11.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_12.jpg b/res/drawable-sw600dp-nodpi/wallpaper_12.jpg
new file mode 100644
index 000000000..614498b4f
--- /dev/null
+++ b/res/drawable-sw600dp-nodpi/wallpaper_12.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_architecture_small.jpg b/res/drawable-sw600dp-nodpi/wallpaper_architecture_small.jpg
deleted file mode 100644
index f17d9e8a1..000000000
--- a/res/drawable-sw600dp-nodpi/wallpaper_architecture_small.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_bubblegum_small.jpg b/res/drawable-sw600dp-nodpi/wallpaper_bubblegum_small.jpg
deleted file mode 100644
index 587581048..000000000
--- a/res/drawable-sw600dp-nodpi/wallpaper_bubblegum_small.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_canyon_small.jpg b/res/drawable-sw600dp-nodpi/wallpaper_canyon_small.jpg
deleted file mode 100644
index 72513b4f4..000000000
--- a/res/drawable-sw600dp-nodpi/wallpaper_canyon_small.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_chroma_small.jpg b/res/drawable-sw600dp-nodpi/wallpaper_chroma_small.jpg
deleted file mode 100644
index 781c2c7ec..000000000
--- a/res/drawable-sw600dp-nodpi/wallpaper_chroma_small.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_escape_small.jpg b/res/drawable-sw600dp-nodpi/wallpaper_escape_small.jpg
deleted file mode 100644
index 3a1a9c12c..000000000
--- a/res/drawable-sw600dp-nodpi/wallpaper_escape_small.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_fidelity_small.jpg b/res/drawable-sw600dp-nodpi/wallpaper_fidelity_small.jpg
deleted file mode 100644
index 01092cc3c..000000000
--- a/res/drawable-sw600dp-nodpi/wallpaper_fidelity_small.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_flora_small.jpg b/res/drawable-sw600dp-nodpi/wallpaper_flora_small.jpg
deleted file mode 100644
index 7faebc9a4..000000000
--- a/res/drawable-sw600dp-nodpi/wallpaper_flora_small.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_kepler_small.jpg b/res/drawable-sw600dp-nodpi/wallpaper_kepler_small.jpg
deleted file mode 100644
index dad79a274..000000000
--- a/res/drawable-sw600dp-nodpi/wallpaper_kepler_small.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_leaf_small.jpg b/res/drawable-sw600dp-nodpi/wallpaper_leaf_small.jpg
deleted file mode 100644
index f37aab932..000000000
--- a/res/drawable-sw600dp-nodpi/wallpaper_leaf_small.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_noir_small.jpg b/res/drawable-sw600dp-nodpi/wallpaper_noir_small.jpg
deleted file mode 100644
index 482a832f2..000000000
--- a/res/drawable-sw600dp-nodpi/wallpaper_noir_small.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_outofthebox_small.jpg b/res/drawable-sw600dp-nodpi/wallpaper_outofthebox_small.jpg
deleted file mode 100644
index 0b4cde7c0..000000000
--- a/res/drawable-sw600dp-nodpi/wallpaper_outofthebox_small.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_architecture.jpg b/res/drawable-sw720dp-nodpi/wallpaper_architecture.jpg
index fae9d4fbf..fae9d4fbf 100644
--- a/res/drawable-sw600dp-nodpi/wallpaper_architecture.jpg
+++ b/res/drawable-sw720dp-nodpi/wallpaper_architecture.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_architecture_small.jpg b/res/drawable-sw720dp-nodpi/wallpaper_architecture_small.jpg
index f17d9e8a1..f17d9e8a1 100644
--- a/res/drawable-nodpi/wallpaper_architecture_small.jpg
+++ b/res/drawable-sw720dp-nodpi/wallpaper_architecture_small.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_bubblegum.jpg b/res/drawable-sw720dp-nodpi/wallpaper_bubblegum.jpg
index d902912a7..d902912a7 100644
--- a/res/drawable-sw600dp-nodpi/wallpaper_bubblegum.jpg
+++ b/res/drawable-sw720dp-nodpi/wallpaper_bubblegum.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_bubblegum_small.jpg b/res/drawable-sw720dp-nodpi/wallpaper_bubblegum_small.jpg
index 587581048..587581048 100644
--- a/res/drawable-nodpi/wallpaper_bubblegum_small.jpg
+++ b/res/drawable-sw720dp-nodpi/wallpaper_bubblegum_small.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_canyon.jpg b/res/drawable-sw720dp-nodpi/wallpaper_canyon.jpg
index 96e3be533..96e3be533 100644
--- a/res/drawable-sw600dp-nodpi/wallpaper_canyon.jpg
+++ b/res/drawable-sw720dp-nodpi/wallpaper_canyon.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_canyon_small.jpg b/res/drawable-sw720dp-nodpi/wallpaper_canyon_small.jpg
index 72513b4f4..72513b4f4 100644
--- a/res/drawable-nodpi/wallpaper_canyon_small.jpg
+++ b/res/drawable-sw720dp-nodpi/wallpaper_canyon_small.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_chroma.jpg b/res/drawable-sw720dp-nodpi/wallpaper_chroma.jpg
index 355286e3e..355286e3e 100644
--- a/res/drawable-sw600dp-nodpi/wallpaper_chroma.jpg
+++ b/res/drawable-sw720dp-nodpi/wallpaper_chroma.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_chroma_small.jpg b/res/drawable-sw720dp-nodpi/wallpaper_chroma_small.jpg
index 781c2c7ec..781c2c7ec 100644
--- a/res/drawable-nodpi/wallpaper_chroma_small.jpg
+++ b/res/drawable-sw720dp-nodpi/wallpaper_chroma_small.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_escape.jpg b/res/drawable-sw720dp-nodpi/wallpaper_escape.jpg
index d192ebff5..d192ebff5 100644
--- a/res/drawable-sw600dp-nodpi/wallpaper_escape.jpg
+++ b/res/drawable-sw720dp-nodpi/wallpaper_escape.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_escape_small.jpg b/res/drawable-sw720dp-nodpi/wallpaper_escape_small.jpg
index 3a1a9c12c..3a1a9c12c 100644
--- a/res/drawable-nodpi/wallpaper_escape_small.jpg
+++ b/res/drawable-sw720dp-nodpi/wallpaper_escape_small.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_fidelity.jpg b/res/drawable-sw720dp-nodpi/wallpaper_fidelity.jpg
index d7ddef438..d7ddef438 100644
--- a/res/drawable-sw600dp-nodpi/wallpaper_fidelity.jpg
+++ b/res/drawable-sw720dp-nodpi/wallpaper_fidelity.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_fidelity_small.jpg b/res/drawable-sw720dp-nodpi/wallpaper_fidelity_small.jpg
index 01092cc3c..01092cc3c 100644
--- a/res/drawable-nodpi/wallpaper_fidelity_small.jpg
+++ b/res/drawable-sw720dp-nodpi/wallpaper_fidelity_small.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_flora.jpg b/res/drawable-sw720dp-nodpi/wallpaper_flora.jpg
index ecdf0becc..ecdf0becc 100644
--- a/res/drawable-sw600dp-nodpi/wallpaper_flora.jpg
+++ b/res/drawable-sw720dp-nodpi/wallpaper_flora.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_flora_small.jpg b/res/drawable-sw720dp-nodpi/wallpaper_flora_small.jpg
index 7faebc9a4..7faebc9a4 100644
--- a/res/drawable-nodpi/wallpaper_flora_small.jpg
+++ b/res/drawable-sw720dp-nodpi/wallpaper_flora_small.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_kepler.jpg b/res/drawable-sw720dp-nodpi/wallpaper_kepler.jpg
index c7c6c2b72..c7c6c2b72 100644
--- a/res/drawable-sw600dp-nodpi/wallpaper_kepler.jpg
+++ b/res/drawable-sw720dp-nodpi/wallpaper_kepler.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_kepler_small.jpg b/res/drawable-sw720dp-nodpi/wallpaper_kepler_small.jpg
index dad79a274..dad79a274 100644
--- a/res/drawable-nodpi/wallpaper_kepler_small.jpg
+++ b/res/drawable-sw720dp-nodpi/wallpaper_kepler_small.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_leaf.jpg b/res/drawable-sw720dp-nodpi/wallpaper_leaf.jpg
index 543d118f2..543d118f2 100644
--- a/res/drawable-sw600dp-nodpi/wallpaper_leaf.jpg
+++ b/res/drawable-sw720dp-nodpi/wallpaper_leaf.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_leaf_small.jpg b/res/drawable-sw720dp-nodpi/wallpaper_leaf_small.jpg
index f37aab932..f37aab932 100644
--- a/res/drawable-nodpi/wallpaper_leaf_small.jpg
+++ b/res/drawable-sw720dp-nodpi/wallpaper_leaf_small.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_noir.jpg b/res/drawable-sw720dp-nodpi/wallpaper_noir.jpg
index 283bf21da..283bf21da 100644
--- a/res/drawable-sw600dp-nodpi/wallpaper_noir.jpg
+++ b/res/drawable-sw720dp-nodpi/wallpaper_noir.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_noir_small.jpg b/res/drawable-sw720dp-nodpi/wallpaper_noir_small.jpg
index 482a832f2..482a832f2 100644
--- a/res/drawable-nodpi/wallpaper_noir_small.jpg
+++ b/res/drawable-sw720dp-nodpi/wallpaper_noir_small.jpg
Binary files differ
diff --git a/res/drawable-sw600dp-nodpi/wallpaper_outofthebox.jpg b/res/drawable-sw720dp-nodpi/wallpaper_outofthebox.jpg
index 1529dce4f..1529dce4f 100644
--- a/res/drawable-sw600dp-nodpi/wallpaper_outofthebox.jpg
+++ b/res/drawable-sw720dp-nodpi/wallpaper_outofthebox.jpg
Binary files differ
diff --git a/res/drawable-nodpi/wallpaper_outofthebox_small.jpg b/res/drawable-sw720dp-nodpi/wallpaper_outofthebox_small.jpg
index 0b4cde7c0..0b4cde7c0 100644
--- a/res/drawable-nodpi/wallpaper_outofthebox_small.jpg
+++ b/res/drawable-sw720dp-nodpi/wallpaper_outofthebox_small.jpg
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_01.jpg b/res/drawable-xhdpi/wallpaper_01.jpg
new file mode 100644
index 000000000..5b8d1d598
--- /dev/null
+++ b/res/drawable-xhdpi/wallpaper_01.jpg
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_02.jpg b/res/drawable-xhdpi/wallpaper_02.jpg
new file mode 100644
index 000000000..29cba1317
--- /dev/null
+++ b/res/drawable-xhdpi/wallpaper_02.jpg
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_03.jpg b/res/drawable-xhdpi/wallpaper_03.jpg
new file mode 100644
index 000000000..5c165cf38
--- /dev/null
+++ b/res/drawable-xhdpi/wallpaper_03.jpg
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_04.jpg b/res/drawable-xhdpi/wallpaper_04.jpg
new file mode 100644
index 000000000..2f0da9de7
--- /dev/null
+++ b/res/drawable-xhdpi/wallpaper_04.jpg
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_05.jpg b/res/drawable-xhdpi/wallpaper_05.jpg
new file mode 100644
index 000000000..4ae7bb9ba
--- /dev/null
+++ b/res/drawable-xhdpi/wallpaper_05.jpg
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_08.jpg b/res/drawable-xhdpi/wallpaper_08.jpg
new file mode 100644
index 000000000..d091cb7b7
--- /dev/null
+++ b/res/drawable-xhdpi/wallpaper_08.jpg
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_09.jpg b/res/drawable-xhdpi/wallpaper_09.jpg
new file mode 100644
index 000000000..7990d4c66
--- /dev/null
+++ b/res/drawable-xhdpi/wallpaper_09.jpg
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_10.jpg b/res/drawable-xhdpi/wallpaper_10.jpg
new file mode 100644
index 000000000..1fd138891
--- /dev/null
+++ b/res/drawable-xhdpi/wallpaper_10.jpg
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_11.jpg b/res/drawable-xhdpi/wallpaper_11.jpg
new file mode 100644
index 000000000..b1609b9f9
--- /dev/null
+++ b/res/drawable-xhdpi/wallpaper_11.jpg
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_12.jpg b/res/drawable-xhdpi/wallpaper_12.jpg
new file mode 100644
index 000000000..ed7fa0f6d
--- /dev/null
+++ b/res/drawable-xhdpi/wallpaper_12.jpg
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_architecture.jpg b/res/drawable-xhdpi/wallpaper_architecture.jpg
deleted file mode 100644
index 7605f753b..000000000
--- a/res/drawable-xhdpi/wallpaper_architecture.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_architecture_small.jpg b/res/drawable-xhdpi/wallpaper_architecture_small.jpg
deleted file mode 100644
index f17d9e8a1..000000000
--- a/res/drawable-xhdpi/wallpaper_architecture_small.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_bubblegum.jpg b/res/drawable-xhdpi/wallpaper_bubblegum.jpg
deleted file mode 100644
index d6c132990..000000000
--- a/res/drawable-xhdpi/wallpaper_bubblegum.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_bubblegum_small.jpg b/res/drawable-xhdpi/wallpaper_bubblegum_small.jpg
deleted file mode 100644
index 587581048..000000000
--- a/res/drawable-xhdpi/wallpaper_bubblegum_small.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_canyon.jpg b/res/drawable-xhdpi/wallpaper_canyon.jpg
deleted file mode 100644
index 7c3ff3a98..000000000
--- a/res/drawable-xhdpi/wallpaper_canyon.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_canyon_small.jpg b/res/drawable-xhdpi/wallpaper_canyon_small.jpg
deleted file mode 100644
index 72513b4f4..000000000
--- a/res/drawable-xhdpi/wallpaper_canyon_small.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_chroma.jpg b/res/drawable-xhdpi/wallpaper_chroma.jpg
deleted file mode 100644
index 6f8c85ead..000000000
--- a/res/drawable-xhdpi/wallpaper_chroma.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_chroma_small.jpg b/res/drawable-xhdpi/wallpaper_chroma_small.jpg
deleted file mode 100644
index 781c2c7ec..000000000
--- a/res/drawable-xhdpi/wallpaper_chroma_small.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_escape.jpg b/res/drawable-xhdpi/wallpaper_escape.jpg
deleted file mode 100644
index 09c9866eb..000000000
--- a/res/drawable-xhdpi/wallpaper_escape.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_escape_small.jpg b/res/drawable-xhdpi/wallpaper_escape_small.jpg
deleted file mode 100644
index 3a1a9c12c..000000000
--- a/res/drawable-xhdpi/wallpaper_escape_small.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_fidelity.jpg b/res/drawable-xhdpi/wallpaper_fidelity.jpg
deleted file mode 100644
index 38b15a529..000000000
--- a/res/drawable-xhdpi/wallpaper_fidelity.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_fidelity_small.jpg b/res/drawable-xhdpi/wallpaper_fidelity_small.jpg
deleted file mode 100644
index 01092cc3c..000000000
--- a/res/drawable-xhdpi/wallpaper_fidelity_small.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_flora.jpg b/res/drawable-xhdpi/wallpaper_flora.jpg
deleted file mode 100644
index 6fdada97c..000000000
--- a/res/drawable-xhdpi/wallpaper_flora.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_flora_small.jpg b/res/drawable-xhdpi/wallpaper_flora_small.jpg
deleted file mode 100644
index 7faebc9a4..000000000
--- a/res/drawable-xhdpi/wallpaper_flora_small.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_kepler.jpg b/res/drawable-xhdpi/wallpaper_kepler.jpg
deleted file mode 100644
index 45ce15c73..000000000
--- a/res/drawable-xhdpi/wallpaper_kepler.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_kepler_small.jpg b/res/drawable-xhdpi/wallpaper_kepler_small.jpg
deleted file mode 100644
index dad79a274..000000000
--- a/res/drawable-xhdpi/wallpaper_kepler_small.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_leaf.jpg b/res/drawable-xhdpi/wallpaper_leaf.jpg
deleted file mode 100644
index c8cc7fe5f..000000000
--- a/res/drawable-xhdpi/wallpaper_leaf.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_leaf_small.jpg b/res/drawable-xhdpi/wallpaper_leaf_small.jpg
deleted file mode 100644
index f37aab932..000000000
--- a/res/drawable-xhdpi/wallpaper_leaf_small.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_noir.jpg b/res/drawable-xhdpi/wallpaper_noir.jpg
deleted file mode 100644
index 535eda897..000000000
--- a/res/drawable-xhdpi/wallpaper_noir.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_noir_small.jpg b/res/drawable-xhdpi/wallpaper_noir_small.jpg
deleted file mode 100644
index 482a832f2..000000000
--- a/res/drawable-xhdpi/wallpaper_noir_small.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_outofthebox.jpg b/res/drawable-xhdpi/wallpaper_outofthebox.jpg
deleted file mode 100644
index f3ad2ee6f..000000000
--- a/res/drawable-xhdpi/wallpaper_outofthebox.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/wallpaper_outofthebox_small.jpg b/res/drawable-xhdpi/wallpaper_outofthebox_small.jpg
deleted file mode 100644
index 0b4cde7c0..000000000
--- a/res/drawable-xhdpi/wallpaper_outofthebox_small.jpg
+++ /dev/null
Binary files 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 000000000..1313fe70d
--- /dev/null
+++ b/res/drawable-xhdpi/widget_container_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/widget_preview_tile.png b/res/drawable-xhdpi/widget_preview_tile.png
new file mode 100644
index 000000000..60238671e
--- /dev/null
+++ b/res/drawable-xhdpi/widget_preview_tile.png
Binary files differ
diff --git a/res/layout-land/apps_customize_application.xml b/res/layout-land/apps_customize_application.xml
index bface6b7d..ba95b27a6 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-land/drop_target_bar.xml b/res/layout-land/drop_target_bar.xml
index 55d94218e..794a79edb 100644
--- a/res/layout-land/drop_target_bar.xml
+++ b/res/layout-land/drop_target_bar.xml
@@ -22,7 +22,7 @@
<com.android.launcher2.DeleteDropTarget
style="@style/DropTargetButton"
android:id="@+id/delete_target_text"
- android:drawableTop="@drawable/info_target_selector" />
+ android:drawableTop="@drawable/remove_target_selector" />
</FrameLayout>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
diff --git a/res/layout-land/launcher.xml b/res/layout-land/launcher.xml
index 99d4181f9..6b65f5666 100644
--- a/res/layout-land/launcher.xml
+++ b/res/layout-land/launcher.xml
@@ -76,6 +76,16 @@
android:id="@+id/qsb_bar"
layout="@layout/qsb_bar" />
+ <com.android.launcher2.DrawableStateProxyView
+ android:id="@+id/voice_button_proxy"
+ android:layout_width="@dimen/qsb_bar_height"
+ android:layout_height="@dimen/app_icon_size"
+ android:layout_gravity="bottom|left"
+ android:clickable="true"
+ android:onClick="onClickVoiceButton"
+ android:importantForAccessibility="no"
+ launcher:sourceViewId="@+id/voice_button" />
+
<include layout="@layout/apps_customize_pane"
android:id="@+id/apps_customize_pane"
android:layout_width="match_parent"
diff --git a/res/layout-port/apps_customize_application.xml b/res/layout-port/apps_customize_application.xml
index 37b41851f..84a8712d7 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-port/launcher.xml b/res/layout-port/launcher.xml
index f60a204da..a4275010b 100644
--- a/res/layout-port/launcher.xml
+++ b/res/layout-port/launcher.xml
@@ -75,9 +75,9 @@
<com.android.launcher2.DrawableStateProxyView
android:id="@+id/voice_button_proxy"
- android:layout_width="@dimen/qsb_bar_height"
+ android:layout_width="80dp"
android:layout_height="@dimen/qsb_bar_height"
- android:layout_gravity="right"
+ android:layout_gravity="top|right"
android:clickable="true"
android:onClick="onClickVoiceButton"
android:importantForAccessibility="no"
diff --git a/res/layout/apps_customize_widget.xml b/res/layout/apps_customize_widget.xml
index 90883c51c..abb7508b5 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">
+ <!-- The preview of the widget or shortcut. -->
+ <com.android.launcher2.PagedViewWidgetImageView
+ android:id="@+id/widget_preview"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:paddingTop="@dimen/app_widget_preview_padding_top"
+ android:paddingLeft="@dimen/app_widget_preview_padding_left"
+ android:paddingRight="@dimen/app_widget_preview_padding_right"
+ android:scaleType="matrix"
+ android:background="@drawable/widget_container_holo" />
+
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_marginBottom="4dp"
+ android:layout_marginTop="@dimen/app_widget_preview_label_margin_top"
+ android:layout_marginLeft="@dimen/app_widget_preview_label_margin_left"
+ android:layout_marginRight="@dimen/app_widget_preview_label_margin_right"
android:orientation="horizontal">
<!-- The name of the widget. -->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
@@ -62,13 +73,5 @@
android:textSize="12sp" />
</LinearLayout>
- <!-- The icon of the widget. -->
- <com.android.launcher2.PagedViewWidgetImageView
- android:id="@+id/widget_preview"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:paddingTop="@dimen/app_widget_preview_padding_top"
- android:paddingLeft="@dimen/app_widget_preview_padding_left"
- android:scaleType="matrix" />
+
</com.android.launcher2.PagedViewWidget>
diff --git a/res/values-sw600dp-land/dimens.xml b/res/values-sw600dp-land/dimens.xml
index 9c54cf3db..109372950 100644
--- a/res/values-sw600dp-land/dimens.xml
+++ b/res/values-sw600dp-land/dimens.xml
@@ -31,4 +31,10 @@
<!-- QSB -->
<dimen name="qsb_bar_height">82dp</dimen>
+
+<!-- Workspace -->
+ <dimen name="workspace_divider_padding_top">12dp</dimen>
+ <dimen name="workspace_divider_padding_bottom">12dp</dimen>
+ <dimen name="workspace_divider_padding_left">0dp</dimen>
+ <dimen name="workspace_divider_padding_right">0dp</dimen>
</resources>
diff --git a/res/values-sw600dp/dimens.xml b/res/values-sw600dp/dimens.xml
index 99e890966..bb6cbc953 100644
--- a/res/values-sw600dp/dimens.xml
+++ b/res/values-sw600dp/dimens.xml
@@ -61,7 +61,9 @@
<dimen name="apps_customize_tab_bar_margin_top">8dp</dimen>
<dimen name="apps_customize_widget_cell_width_gap">20dp</dimen>
<dimen name="apps_customize_widget_cell_height_gap">24dp</dimen>
-
+ <dimen name="app_widget_preview_label_margin_top">8dp</dimen>
+ <dimen name="app_widget_preview_label_margin_left">@dimen/app_widget_preview_padding_left</dimen>
+ <dimen name="app_widget_preview_label_margin_right">@dimen/app_widget_preview_padding_right</dimen>
<!-- Workspace cell size -->
<dimen name="workspace_cell_width_land">88dp</dimen>
<dimen name="workspace_cell_width_port">96dp</dimen>
diff --git a/res/values-sw720dp/dimens.xml b/res/values-sw720dp/dimens.xml
index cfd76dce0..7daccd079 100644
--- a/res/values-sw720dp/dimens.xml
+++ b/res/values-sw720dp/dimens.xml
@@ -40,9 +40,6 @@
<dimen name="apps_customize_cell_height">96dp</dimen>
<integer name="apps_customize_maxCellCountX">-1</integer>
<integer name="apps_customize_maxCellCountY">-1</integer>
- <dimen name="app_widget_preview_padding_left">0dp</dimen>
- <dimen name="app_widget_preview_padding_top">10dp</dimen>
-
<dimen name="all_apps_button_vertical_padding">4dip</dimen>
<!-- roughly a status bar (for determining how many rows of icons are in home) -->
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index cd939db0f..224daac53 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -93,24 +93,6 @@
<attr name="sourceImageViewId" format="integer" />
</declare-styleable>
- <!-- PagedViewIcon specific attributes. These attributes are used to customize
- a PagedViewIcon view in XML files. -->
- <declare-styleable name="PagedViewIcon">
- <!-- The blur color of the holographic outline -->
- <attr name="blurColor" format="color" />
- <!-- The outline color of the holographic outline -->
- <attr name="outlineColor" format="color" />
- </declare-styleable>
-
- <!-- PagedViewWidget specific attributes. These attributes are used to
- customize a PagedViewWidget view in XML files. -->
- <declare-styleable name="PagedViewWidget">
- <!-- The blur color of the holographic outline -->
- <attr name="blurColor" />
- <!-- The outline color of the holographic outline -->
- <attr name="outlineColor" />
- </declare-styleable>
-
<!-- PagedView specific attributes. These attributes are used to customize
a PagedView view in XML files. -->
<declare-styleable name="PagedView">
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index e789fdf33..7cc89602f 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. -->
<dimen name="dragViewScale">12dp</dimen>
- <!-- Padding applied to AppWidgets -->
- <dimen name="app_widget_preview_padding_left">8dp</dimen>
- <dimen name="app_widget_preview_padding_top">8dp</dimen>
+ <!-- Padding applied to AppWidget previews -->
+ <dimen name="app_widget_preview_padding_left">16dp</dimen>
+ <dimen name="app_widget_preview_padding_right">16dp</dimen>
+ <dimen name="app_widget_preview_padding_top">32dp</dimen>
+ <dimen name="app_widget_preview_label_margin_top">4dp</dimen>
+ <dimen name="app_widget_preview_label_margin_left">2dp</dimen>
+ <dimen name="app_widget_preview_label_margin_right">2dp</dimen>
+
+ <!-- Padding applied to shortcut previews -->
+ <dimen name="shortcut_preview_padding_left">0dp</dimen>
+ <dimen name="shortcut_preview_padding_right">0dp</dimen>
+ <dimen name="shortcut_preview_padding_top">0dp</dimen>
<!-- Folders -->
<!-- The size of the image which sits behind the preview of the folder contents -->
diff --git a/res/values/wallpapers.xml b/res/values/wallpapers.xml
index fb386f491..ed56b18ff 100644
--- a/res/values/wallpapers.xml
+++ b/res/values/wallpapers.xml
@@ -17,16 +17,17 @@
<resources>
<string-array name="wallpapers" translatable="false">
- <item>wallpaper_architecture</item>
- <item>wallpaper_bubblegum</item>
- <item>wallpaper_canyon</item>
- <item>wallpaper_chroma</item>
- <item>wallpaper_escape</item>
- <item>wallpaper_fidelity</item>
- <item>wallpaper_flora</item>
- <item>wallpaper_kepler</item>
- <item>wallpaper_leaf</item>
- <item>wallpaper_noir</item>
- <item>wallpaper_outofthebox</item>
+ <item>wallpaper_01</item>
+ <item>wallpaper_02</item>
+ <item>wallpaper_03</item>
+ <item>wallpaper_04</item>
+ <item>wallpaper_05</item>
+ <item>wallpaper_06</item>
+ <item>wallpaper_07</item>
+ <item>wallpaper_08</item>
+ <item>wallpaper_09</item>
+ <item>wallpaper_10</item>
+ <item>wallpaper_11</item>
+ <item>wallpaper_12</item>
</string-array>
</resources>
diff --git a/src/com/android/launcher2/AppsCustomizePagedView.java b/src/com/android/launcher2/AppsCustomizePagedView.java
index 5e0d43dcc..67def1794 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<AsyncTaskPageData, Void, AsyncTas
int threadPriority;
}
+abstract class WeakReferenceThreadLocal<T> {
+ private ThreadLocal<WeakReference<T>> mThreadLocal;
+ public WeakReferenceThreadLocal() {
+ mThreadLocal = new ThreadLocal<WeakReference<T>>();
+ }
+
+ abstract T initialValue();
+
+ public void set(T t) {
+ mThreadLocal.set(new WeakReference<T>(t));
+ }
+
+ public T get() {
+ WeakReference<T> reference = mThreadLocal.get();
+ T obj;
+ if (reference == null) {
+ obj = initialValue();
+ mThreadLocal.set(new WeakReference<T>(obj));
+ return obj;
+ } else {
+ obj = reference.get();
+ if (obj == null) {
+ obj = initialValue();
+ mThreadLocal.set(new WeakReference<T>(obj));
+ }
+ return obj;
+ }
+ }
+}
+
+class CanvasCache extends WeakReferenceThreadLocal<Canvas> {
+ @Override
+ protected Canvas initialValue() {
+ return new Canvas();
+ }
+}
+
+class PaintCache extends WeakReferenceThreadLocal<Paint> {
+ @Override
+ protected Paint initialValue() {
+ return null;
+ }
+}
+
+class BitmapCache extends WeakReferenceThreadLocal<Bitmap> {
+ @Override
+ protected Bitmap initialValue() {
+ return null;
+ }
+}
+
+class RectCache extends WeakReferenceThreadLocal<Rect> {
+ @Override
+ protected Rect initialValue() {
+ return new Rect();
+ }
+}
+
/**
* The Apps/Customize page that displays all the applications, widgets, and shortcuts.
*/
@@ -245,6 +311,17 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
private ArrayList<AsyncTaskPageData> mDeferredSyncWidgetPageItems =
new ArrayList<AsyncTaskPageData>();
+ // Used for drawing shortcut previews
+ BitmapCache mCachedShortcutPreviewBitmap = new BitmapCache();
+ PaintCache mCachedShortcutPreviewPaint = new PaintCache();
+ CanvasCache mCachedShortcutPreviewCanvas = new CanvasCache();
+
+ // Used for drawing widget previews
+ CanvasCache mCachedAppWidgetPreviewCanvas = new CanvasCache();
+ RectCache mCachedAppWidgetPreviewSrcRect = new RectCache();
+ RectCache mCachedAppWidgetPreviewDestRect = new RectCache();
+ PaintCache mCachedAppWidgetPreviewPaint = new PaintCache();
+
public AppsCustomizePagedView(Context context, AttributeSet attrs) {
super(context, attrs);
mLayoutInflater = LayoutInflater.from(context);
@@ -689,11 +766,11 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
FastBitmapDrawable previewDrawable = (FastBitmapDrawable) image.getDrawable();
float minScale = 1.25f;
- int minWidth, minHeight;
- minWidth = Math.max((int) (previewDrawable.getIntrinsicWidth() * minScale), size[0]);
- minHeight = Math.max((int) (previewDrawable.getIntrinsicHeight() * minScale), size[1]);
+ int maxWidth, maxHeight;
+ maxWidth = Math.min((int) (previewDrawable.getIntrinsicWidth() * minScale), size[0]);
+ maxHeight = Math.min((int) (previewDrawable.getIntrinsicHeight() * minScale), size[1]);
preview = getWidgetPreview(createWidgetInfo.componentName, createWidgetInfo.previewImage,
- createWidgetInfo.icon, spanX, spanY, minWidth, minHeight);
+ createWidgetInfo.icon, spanX, spanY, maxWidth, maxHeight);
// Determine the image view drawable scale relative to the preview
float[] mv = new float[9];
@@ -706,17 +783,15 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
m.getValues(mv);
scale = (float) mv[0];
} else {
- // Workaround for the fact that we don't keep the original ResolveInfo associated with
- // the shortcut around. To get the icon, we just render the preview image (which has
- // the shortcut icon) to a new drag bitmap that clips the non-icon space.
- preview = Bitmap.createBitmap(mWidgetPreviewIconPaddedDimension,
- mWidgetPreviewIconPaddedDimension, Bitmap.Config.ARGB_8888);
- Drawable d = image.getDrawable();
+ PendingAddShortcutInfo createShortcutInfo = (PendingAddShortcutInfo) v.getTag();
+ Drawable icon = mIconCache.getFullResIcon(createShortcutInfo.shortcutActivityInfo);
+ preview = Bitmap.createBitmap(icon.getIntrinsicWidth(),
+ icon.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
+
mCanvas.setBitmap(preview);
mCanvas.save();
- mCanvas.translate((mWidgetPreviewIconPaddedDimension - d.getIntrinsicWidth()) / 2,
- (mWidgetPreviewIconPaddedDimension - d.getIntrinsicHeight()) / 2);
- d.draw(mCanvas);
+ renderDrawableToBitmap(icon, preview, 0, 0,
+ icon.getIntrinsicWidth(), icon.getIntrinsicHeight());
mCanvas.restore();
mCanvas.setBitmap(null);
createItemInfo.spanX = createItemInfo.spanY = 1;
@@ -1118,11 +1193,11 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
}
private void renderDrawableToBitmap(Drawable d, Bitmap bitmap, int x, int y, int w, int h) {
- renderDrawableToBitmap(d, bitmap, x, y, w, h, 1f, 0xFFFFFFFF);
+ renderDrawableToBitmap(d, bitmap, x, y, w, h, 1f);
}
private void renderDrawableToBitmap(Drawable d, Bitmap bitmap, int x, int y, int w, int h,
- float scale, int multiplyColor) {
+ float scale) {
if (bitmap != null) {
Canvas c = new Canvas(bitmap);
c.scale(scale, scale);
@@ -1133,20 +1208,60 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
c.setBitmap(null);
}
}
- private Bitmap getShortcutPreview(ResolveInfo info) {
- // Render the background
- int offset = 0;
- int bitmapSize = mAppIconSize;
- Bitmap preview = Bitmap.createBitmap(bitmapSize, bitmapSize, Config.ARGB_8888);
+ private Bitmap getShortcutPreview(ResolveInfo info, int maxWidth, int maxHeight) {
+ Bitmap tempBitmap = mCachedShortcutPreviewBitmap.get();
+ final Canvas c = mCachedShortcutPreviewCanvas.get();
+ if (tempBitmap == null ||
+ tempBitmap.getWidth() != maxWidth ||
+ tempBitmap.getHeight() != maxHeight) {
+ tempBitmap = Bitmap.createBitmap(maxWidth, maxHeight, Config.ARGB_8888);
+ mCachedShortcutPreviewBitmap.set(tempBitmap);
+ } else {
+ c.setBitmap(tempBitmap);
+ c.drawColor(0, PorterDuff.Mode.CLEAR);
+ c.setBitmap(null);
+ }
// Render the icon
Drawable icon = mIconCache.getFullResIcon(info);
- renderDrawableToBitmap(icon, preview, offset, offset, mAppIconSize, mAppIconSize);
+
+ int paddingTop =
+ getResources().getDimensionPixelOffset(R.dimen.shortcut_preview_padding_top);
+ int paddingLeft =
+ getResources().getDimensionPixelOffset(R.dimen.shortcut_preview_padding_left);
+ int paddingRight =
+ getResources().getDimensionPixelOffset(R.dimen.shortcut_preview_padding_right);
+
+ int scaledIconWidth = (maxWidth - paddingLeft - paddingRight);
+ float scaleSize = scaledIconWidth / (float) mAppIconSize;
+
+ renderDrawableToBitmap(
+ icon, tempBitmap, paddingLeft, paddingTop, scaledIconWidth, scaledIconWidth);
+
+ Bitmap preview = Bitmap.createBitmap(maxWidth, maxHeight, Config.ARGB_8888);
+ c.setBitmap(preview);
+ Paint p = mCachedShortcutPreviewPaint.get();
+ if (p == null) {
+ p = new Paint();
+ ColorMatrix colorMatrix = new ColorMatrix();
+ colorMatrix.setSaturation(0);
+ p.setColorFilter(new ColorMatrixColorFilter(colorMatrix));
+ p.setAlpha((int) (255 * 0.06f));
+ //float density = 1f;
+ //p.setMaskFilter(new BlurMaskFilter(15*density, BlurMaskFilter.Blur.NORMAL));
+ mCachedShortcutPreviewPaint.set(p);
+ }
+ c.drawBitmap(tempBitmap, 0, 0, p);
+ c.setBitmap(null);
+
+ renderDrawableToBitmap(icon, preview, 0, 0, mAppIconSize, mAppIconSize);
+
return preview;
}
- private Bitmap getWidgetPreview(ComponentName provider, int previewImage, int iconId,
- int cellHSpan, int cellVSpan, int maxWidth, int maxHeight) {
+ private Bitmap getWidgetPreview(ComponentName provider, int previewImage,
+ int iconId, int cellHSpan, int cellVSpan, int maxWidth,
+ int maxHeight) {
// Load the preview image if possible
String packageName = provider.getPackageName();
if (maxWidth < 0) maxWidth = Integer.MAX_VALUE;
@@ -1163,68 +1278,93 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
int bitmapWidth;
int bitmapHeight;
+ Bitmap defaultPreview = null;
boolean widgetPreviewExists = (drawable != null);
if (widgetPreviewExists) {
bitmapWidth = drawable.getIntrinsicWidth();
bitmapHeight = drawable.getIntrinsicHeight();
} else {
+ // Generate a preview image if we couldn't load one
if (cellHSpan < 1) cellHSpan = 1;
if (cellVSpan < 1) cellVSpan = 1;
- // Determine the size of the bitmap for the preview image we will generate
- // TODO: This actually uses the apps customize cell layout params, where as we make want
- // the Workspace params for more accuracy.
- bitmapWidth = mWidgetSpacingLayout.estimateCellWidth(cellHSpan);
- bitmapHeight = mWidgetSpacingLayout.estimateCellHeight(cellVSpan);
- if (cellHSpan == cellVSpan) {
- // For square widgets, we just have a fixed size for 1x1 and larger-than-1x1
- int minOffset = (int) (mAppIconSize * sWidgetPreviewIconPaddingPercentage);
- if (cellHSpan <= 1) {
- bitmapWidth = bitmapHeight = mAppIconSize + 2 * minOffset;
- } else {
- bitmapWidth = bitmapHeight = mAppIconSize + 4 * minOffset;
+
+ BitmapDrawable previewDrawable = (BitmapDrawable) getResources()
+ .getDrawable(R.drawable.widget_preview_tile);
+ final int previewDrawableWidth = previewDrawable
+ .getIntrinsicWidth();
+ final int previewDrawableHeight = previewDrawable
+ .getIntrinsicHeight();
+ bitmapWidth = previewDrawableWidth * cellHSpan; // subtract 2 dips
+ bitmapHeight = previewDrawableHeight * cellVSpan;
+
+ defaultPreview = Bitmap.createBitmap(bitmapWidth, bitmapHeight,
+ Config.ARGB_8888);
+ final Canvas c = mCachedAppWidgetPreviewCanvas.get();
+ c.setBitmap(defaultPreview);
+ previewDrawable.setBounds(0, 0, bitmapWidth, bitmapHeight);
+ previewDrawable.setTileModeXY(Shader.TileMode.REPEAT,
+ Shader.TileMode.REPEAT);
+ previewDrawable.draw(c);
+ c.setBitmap(null);
+
+ // Draw the icon in the top left corner
+ int minOffset = (int) (mAppIconSize * sWidgetPreviewIconPaddingPercentage);
+ int smallestSide = Math.min(bitmapWidth, bitmapHeight);
+ float iconScale = Math.min((float) smallestSide
+ / (mAppIconSize + 2 * minOffset), 1f);
+
+ try {
+ Drawable icon = null;
+ int hoffset =
+ (int) ((previewDrawableWidth - mAppIconSize * iconScale) / 2);
+ int yoffset =
+ (int) ((previewDrawableHeight - mAppIconSize * iconScale) / 2);
+ if (iconId > 0)
+ icon = mIconCache.getFullResIcon(packageName, iconId);
+ Resources resources = mLauncher.getResources();
+ if (icon != null) {
+ renderDrawableToBitmap(icon, defaultPreview, hoffset,
+ yoffset, (int) (mAppIconSize * iconScale),
+ (int) (mAppIconSize * iconScale));
}
+ } catch (Resources.NotFoundException e) {
}
}
+ // Scale to fit width only - let the widget preview be clipped in the
+ // vertical dimension
float scale = 1f;
if (bitmapWidth > maxWidth) {
scale = maxWidth / (float) bitmapWidth;
}
- if (bitmapHeight * scale > maxHeight) {
- scale = maxHeight / (float) bitmapHeight;
- }
if (scale != 1f) {
bitmapWidth = (int) (scale * bitmapWidth);
bitmapHeight = (int) (scale * bitmapHeight);
}
- Bitmap preview = Bitmap.createBitmap(bitmapWidth, bitmapHeight, Config.ARGB_8888);
+ Bitmap preview = Bitmap.createBitmap(bitmapWidth, bitmapHeight,
+ Config.ARGB_8888);
+ // Draw the scaled preview into the final bitmap
if (widgetPreviewExists) {
- renderDrawableToBitmap(drawable, preview, 0, 0, bitmapWidth, bitmapHeight);
+ renderDrawableToBitmap(drawable, preview, 0, 0, bitmapWidth,
+ bitmapHeight);
} else {
- // Generate a preview image if we couldn't load one
- int minOffset = (int) (mAppIconSize * sWidgetPreviewIconPaddingPercentage);
- int smallestSide = Math.min(bitmapWidth, bitmapHeight);
- float iconScale = Math.min((float) smallestSide / (mAppIconSize + 2 * minOffset), 1f);
- if (cellHSpan != 1 || cellVSpan != 1) {
- renderDrawableToBitmap(mDefaultWidgetBackground, preview, 0, 0, bitmapWidth,
- bitmapHeight);
+ final Canvas c = mCachedAppWidgetPreviewCanvas.get();
+ final Rect src = mCachedAppWidgetPreviewSrcRect.get();
+ final Rect dest = mCachedAppWidgetPreviewDestRect.get();
+ c.setBitmap(preview);
+ src.set(0, 0, defaultPreview.getWidth(), defaultPreview.getHeight());
+ dest.set(0, 0, preview.getWidth(), preview.getHeight());
+
+ Paint p = mCachedAppWidgetPreviewPaint.get();
+ if (p == null) {
+ p = new Paint();
+ p.setFilterBitmap(true);
+ mCachedAppWidgetPreviewPaint.set(p);
}
-
- // Draw the icon in the top left corner
- try {
- Drawable icon = null;
- int hoffset = (int) (bitmapWidth / 2 - mAppIconSize * iconScale / 2);
- int yoffset = (int) (bitmapHeight / 2 - mAppIconSize * iconScale / 2);
- if (iconId > 0) icon = mIconCache.getFullResIcon(packageName, iconId);
- Resources resources = mLauncher.getResources();
- if (icon == null) icon = resources.getDrawable(R.drawable.ic_launcher_application);
-
- renderDrawableToBitmap(icon, preview, hoffset, yoffset,
- (int) (mAppIconSize * iconScale),
- (int) (mAppIconSize * iconScale));
- } catch (Resources.NotFoundException e) {}
+ c.drawBitmap(defaultPreview, src, dest, p);
+ c.setBitmap(null);
}
return preview;
}
@@ -1274,7 +1414,7 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
} else if (rawInfo instanceof ResolveInfo) {
// Fill in the shortcuts information
ResolveInfo info = (ResolveInfo) rawInfo;
- createItemInfo = new PendingAddItemInfo();
+ createItemInfo = new PendingAddShortcutInfo(info.activityInfo);
createItemInfo.itemType = LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT;
createItemInfo.componentName = new ComponentName(info.activityInfo.packageName,
info.activityInfo.name);
@@ -1363,7 +1503,7 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
} else if (rawInfo instanceof ResolveInfo) {
// Fill in the shortcuts information
ResolveInfo info = (ResolveInfo) rawInfo;
- images.add(getShortcutPreview(info));
+ images.add(getShortcutPreview(info, data.maxImageWidth, data.maxImageHeight));
}
}
}
diff --git a/src/com/android/launcher2/CellLayout.java b/src/com/android/launcher2/CellLayout.java
index e4b5af3b5..c7ad92310 100644
--- a/src/com/android/launcher2/CellLayout.java
+++ b/src/com/android/launcher2/CellLayout.java
@@ -80,7 +80,6 @@ public class CellLayout extends ViewGroup {
// return an (x, y) value from helper functions. Do NOT use them to maintain other state.
private final int[] mTmpXY = new int[2];
private final int[] mTmpPoint = new int[2];
- private final PointF mTmpPointF = new PointF();
int[] mTempLocation = new int[2];
boolean[][] mOccupied;
@@ -149,7 +148,7 @@ public class CellLayout extends ViewGroup {
static final int LANDSCAPE = 0;
static final int PORTRAIT = 1;
- private static final float REORDER_HINT_MAGNITUDE = 0.10f;
+ private static final float REORDER_HINT_MAGNITUDE = 0.12f;
private static final int REORDER_ANIMATION_DURATION = 150;
private float mReorderHintAnimationMagnitude;
@@ -1903,7 +1902,6 @@ public class CellLayout extends ViewGroup {
// This method starts or changes the reorder hint animations
private void beginOrAdjustHintAnimations(ItemConfiguration solution, View dragView, int delay) {
int childCount = mShortcutsAndWidgets.getChildCount();
- int timeForPriorAnimationToComplete = getMaxCompletionTime();
for (int i = 0; i < childCount; i++) {
View child = mShortcutsAndWidgets.getChildAt(i);
if (child == dragView) continue;
@@ -1912,7 +1910,7 @@ public class CellLayout extends ViewGroup {
if (c != null) {
ReorderHintAnimation rha = new ReorderHintAnimation(child, lp.cellX, lp.cellY,
c.x, c.y, c.spanX, c.spanY);
- rha.animate(timeForPriorAnimationToComplete);
+ rha.animate();
}
}
}
@@ -1921,11 +1919,13 @@ public class CellLayout extends ViewGroup {
// in a temporary state, and hint at where the item will return to.
class ReorderHintAnimation {
View child;
- float deltaX;
- float deltaY;
+ float finalDeltaX;
+ float finalDeltaY;
+ float initDeltaX;
+ float initDeltaY;
+ float finalScale;
+ float initScale;
private static final int DURATION = 300;
- private int repeatCount;
- private boolean cancelOnCycleComplete = false;
ValueAnimator va;
public ReorderHintAnimation(View child, int cellX0, int cellY0, int cellX1, int cellY1,
@@ -1938,69 +1938,73 @@ public class CellLayout extends ViewGroup {
final int y1 = mTmpPoint[1];
final int dX = x1 - x0;
final int dY = y1 - y0;
- deltaX = 0;
- deltaY = 0;
+ finalDeltaX = 0;
+ finalDeltaY = 0;
if (dX == dY && dX == 0) {
} else {
if (dY == 0) {
- deltaX = mReorderHintAnimationMagnitude;
+ finalDeltaX = - Math.signum(dX) * mReorderHintAnimationMagnitude;
} else if (dX == 0) {
- deltaY = mReorderHintAnimationMagnitude;
+ finalDeltaY = - Math.signum(dY) * mReorderHintAnimationMagnitude;
} else {
double angle = Math.atan( (float) (dY) / dX);
- deltaX = (int) (Math.cos(angle) * mReorderHintAnimationMagnitude);
- deltaY = (int) (Math.sin(angle) * mReorderHintAnimationMagnitude);
+ finalDeltaX = (int) (- Math.signum(dX) *
+ Math.abs(Math.cos(angle) * mReorderHintAnimationMagnitude));
+ finalDeltaY = (int) (- Math.signum(dY) *
+ Math.abs(Math.sin(angle) * mReorderHintAnimationMagnitude));
}
}
+ initDeltaX = child.getTranslationX();
+ initDeltaY = child.getTranslationY();
+ finalScale = 1.0f - 4.0f / child.getWidth();
+ initScale = child.getScaleX();
+
child.setPivotY(child.getMeasuredHeight() * 0.5f);
child.setPivotX(child.getMeasuredWidth() * 0.5f);
this.child = child;
}
- void animate(int delay) {
+ void animate() {
if (mShakeAnimators.containsKey(child)) {
ReorderHintAnimation oldAnimation = mShakeAnimators.get(child);
- oldAnimation.completeAnimation();
+ oldAnimation.cancel();
mShakeAnimators.remove(child);
}
- if (deltaX == 0 && deltaY == 0) {
+ if (finalDeltaX == 0 && finalDeltaY == 0) {
return;
}
va = ValueAnimator.ofFloat(0f, 1f);
va.setRepeatMode(ValueAnimator.REVERSE);
va.setRepeatCount(ValueAnimator.INFINITE);
- va.setDuration((int) (DURATION * (1.0f + Math.random()*.08f)));
+ va.setDuration(DURATION);
+ va.setStartDelay((int) (Math.random() * 60));
va.addUpdateListener(new AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float r = ((Float) animation.getAnimatedValue()).floatValue();
- float x = r * deltaX;
- float y = r * deltaY;
+ float x = r * finalDeltaX + (1 - r) * initDeltaX;
+ float y = r * finalDeltaY + (1 - r) * initDeltaY;
child.setTranslationX(x);
child.setTranslationY(y);
- float sf = 4.0f / child.getWidth();
- float s = 1.0f - r * sf;
+ float s = r * finalScale + (1 - r) * initScale;
child.setScaleX(s);
child.setScaleY(s);
}
});
va.addListener(new AnimatorListenerAdapter() {
public void onAnimationRepeat(Animator animation) {
- repeatCount++;
// We make sure to end only after a full period
- if (cancelOnCycleComplete && repeatCount % 2 == 0) {
- va.cancel();
- }
+ initDeltaX = 0;
+ initDeltaY = 0;
+ initScale = 1.0f;
}
});
- va.setStartDelay(Math.max(REORDER_ANIMATION_DURATION, delay));
mShakeAnimators.put(child, this);
va.start();
}
-
- private void completeAnimation() {
- cancelOnCycleComplete = true;
+ private void cancel() {
+ va.cancel();
}
private void completeAnimationImmediately() {
va.cancel();
@@ -2016,16 +2020,6 @@ public class CellLayout extends ViewGroup {
s.setInterpolator(new android.view.animation.DecelerateInterpolator(1.5f));
s.start();
}
-
-
- // Returns the time required to complete the current oscillating animation
- private int completionTime() {
- if (repeatCount % 2 == 0) {
- return (int) (va.getDuration() - va.getCurrentPlayTime() + DURATION);
- } else {
- return (int) (va.getDuration() - va.getCurrentPlayTime());
- }
- }
}
private void completeAndClearReorderHintAnimations() {
@@ -2035,14 +2029,6 @@ public class CellLayout extends ViewGroup {
mShakeAnimators.clear();
}
- private int getMaxCompletionTime() {
- int maxTime = 0;
- for (ReorderHintAnimation a: mShakeAnimators.values()) {
- maxTime = Math.max(maxTime, a.completionTime());
- }
- return maxTime;
- }
-
private void commitTempPlacement() {
for (int i = 0; i < mCountX; i++) {
for (int j = 0; j < mCountY; j++) {
diff --git a/src/com/android/launcher2/Cling.java b/src/com/android/launcher2/Cling.java
index d61b9883a..c83ee2fde 100644
--- a/src/com/android/launcher2/Cling.java
+++ b/src/com/android/launcher2/Cling.java
@@ -28,6 +28,10 @@ import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
+import android.view.FocusFinder;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.accessibility.AccessibilityManager;
import android.widget.FrameLayout;
import com.android.launcher.R;
@@ -111,6 +115,10 @@ public class Cling extends FrameLayout {
mIsInitialized = false;
}
+ public String getDrawIdentifier() {
+ return mDrawIdentifier;
+ }
+
private int[] getPunchThroughPositions() {
if (mDrawIdentifier.equals(WORKSPACE_PORTRAIT)) {
return new int[]{getMeasuredWidth() / 2, getMeasuredHeight() - (mButtonBarHeight / 2)};
@@ -130,6 +138,35 @@ public class Cling extends FrameLayout {
}
@Override
+ public View findViewToTakeAccessibilityFocusFromHover(View child, View descendant) {
+ if (descendant.includeForAccessibility()) {
+ return descendant;
+ }
+ return null;
+ }
+
+ @Override
+ public View focusSearch(int direction) {
+ return this.focusSearch(null, direction);
+ }
+
+ @Override
+ public View focusSearch(View focused, int direction) {
+ return FocusFinder.getInstance().findNextFocus(this, focused, direction);
+ }
+
+ @Override
+ public boolean onHoverEvent(MotionEvent event) {
+ return (mDrawIdentifier.equals(WORKSPACE_PORTRAIT)
+ || mDrawIdentifier.equals(WORKSPACE_LANDSCAPE)
+ || mDrawIdentifier.equals(WORKSPACE_LARGE)
+ || mDrawIdentifier.equals(ALLAPPS_PORTRAIT)
+ || mDrawIdentifier.equals(ALLAPPS_LANDSCAPE)
+ || mDrawIdentifier.equals(ALLAPPS_LARGE)
+ || mDrawIdentifier.equals(WORKSPACE_CUSTOM));
+ }
+
+ @Override
public boolean onTouchEvent(android.view.MotionEvent event) {
if (mDrawIdentifier.equals(WORKSPACE_PORTRAIT) ||
mDrawIdentifier.equals(WORKSPACE_LANDSCAPE) ||
diff --git a/src/com/android/launcher2/IconCache.java b/src/com/android/launcher2/IconCache.java
index 1e42f1bd2..aa19545bd 100644
--- a/src/com/android/launcher2/IconCache.java
+++ b/src/com/android/launcher2/IconCache.java
@@ -20,6 +20,7 @@ import android.app.ActivityManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
+import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.res.Resources;
@@ -94,15 +95,20 @@ public class IconCache {
}
public Drawable getFullResIcon(ResolveInfo info) {
+ return getFullResIcon(info.activityInfo);
+ }
+
+ public Drawable getFullResIcon(ActivityInfo info) {
+
Resources resources;
try {
resources = mPackageManager.getResourcesForApplication(
- info.activityInfo.applicationInfo);
+ info.applicationInfo);
} catch (PackageManager.NameNotFoundException e) {
resources = null;
}
if (resources != null) {
- int iconId = info.activityInfo.getIconResource();
+ int iconId = info.getIconResource();
if (iconId != 0) {
return getFullResIcon(resources, iconId);
}
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index e6c25cbdc..d01de9c77 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -17,6 +17,8 @@
package com.android.launcher2;
+import android.accounts.Account;
+import android.accounts.AccountManager;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
@@ -1869,6 +1871,7 @@ public final class Launcher extends Activity
intent.setPackage(activityName.getPackageName());
}
startActivity(null, intent, "onClickVoiceButton");
+ overridePendingTransition(R.anim.fade_in_fast, R.anim.fade_out_fast);
} catch (ActivityNotFoundException e) {
Intent intent = new Intent(RecognizerIntent.ACTION_WEB_SEARCH);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
@@ -3466,6 +3469,7 @@ public final class Launcher extends Activity
cling.init(this, positionData);
cling.setVisibility(View.VISIBLE);
cling.setLayerType(View.LAYER_TYPE_HARDWARE, null);
+ cling.requestAccessibilityFocus();
if (animate) {
cling.buildLayer();
cling.setAlpha(0f);
@@ -3514,10 +3518,23 @@ public final class Launcher extends Activity
});
}
}
+
+ private boolean skipCustomClingIfNoAccounts() {
+ Cling cling = (Cling) findViewById(R.id.workspace_cling);
+ boolean customCling = cling.getDrawIdentifier().equals("workspace_custom");
+ if (customCling) {
+ AccountManager am = AccountManager.get(this);
+ Account[] accounts = am.getAccountsByType("com.google");
+ return accounts.length == 0;
+ }
+ return false;
+ }
+
public void showFirstRunWorkspaceCling() {
// Enable the clings only if they have not been dismissed before
if (isClingsEnabled() &&
- !mSharedPrefs.getBoolean(Cling.WORKSPACE_CLING_DISMISSED_KEY, false)) {
+ !mSharedPrefs.getBoolean(Cling.WORKSPACE_CLING_DISMISSED_KEY, false) &&
+ !skipCustomClingIfNoAccounts() ) {
initCling(R.id.workspace_cling, null, false, 0);
} else {
removeCling(R.id.workspace_cling);
diff --git a/src/com/android/launcher2/PagedViewWidget.java b/src/com/android/launcher2/PagedViewWidget.java
index e89414254..66b7080d4 100644
--- a/src/com/android/launcher2/PagedViewWidget.java
+++ b/src/com/android/launcher2/PagedViewWidget.java
@@ -43,6 +43,7 @@ public class PagedViewWidget extends LinearLayout {
ShortPressListener mShortPressListener = null;
boolean mShortPressTriggered = false;
static PagedViewWidget sShortpressTarget = null;
+ boolean mIsAppWidget;
public PagedViewWidget(Context context) {
this(context, null);
@@ -84,6 +85,7 @@ public class PagedViewWidget extends LinearLayout {
public void applyFromAppWidgetProviderInfo(AppWidgetProviderInfo info,
int maxWidth, int[] cellSpan) {
+ mIsAppWidget = true;
final ImageView image = (ImageView) findViewById(R.id.widget_preview);
if (maxWidth > -1) {
image.setMaxWidth(maxWidth);
@@ -100,6 +102,7 @@ public class PagedViewWidget extends LinearLayout {
}
public void applyFromResolveInfo(PackageManager pm, ResolveInfo info) {
+ mIsAppWidget = false;
CharSequence label = info.loadLabel(pm);
final ImageView image = (ImageView) findViewById(R.id.widget_preview);
image.setContentDescription(label);
@@ -115,16 +118,25 @@ public class PagedViewWidget extends LinearLayout {
final ImageView i = (ImageView) findViewById(R.id.widget_preview);
int[] maxSize = new int[2];
maxSize[0] = i.getWidth() - i.getPaddingLeft() - i.getPaddingRight();
- maxSize[1] = i.getHeight() - i.getPaddingBottom() - i.getPaddingTop();
+ maxSize[1] = i.getHeight() - i.getPaddingTop();
return maxSize;
}
void applyPreview(FastBitmapDrawable preview, int index) {
final PagedViewWidgetImageView image =
- (PagedViewWidgetImageView) findViewById(R.id.widget_preview);
+ (PagedViewWidgetImageView) findViewById(R.id.widget_preview);
if (preview != null) {
image.mAllowRequestLayout = false;
image.setImageDrawable(preview);
+ if (mIsAppWidget) {
+ // center horizontally
+ int[] imageSize = getPreviewSize();
+ int centerAmount = (imageSize[0] - preview.getIntrinsicWidth()) / 2;
+ image.setPadding(image.getPaddingLeft() + centerAmount,
+ image.getPaddingTop(),
+ image.getPaddingRight(),
+ image.getPaddingBottom());
+ }
image.setAlpha(1f);
image.mAllowRequestLayout = true;
}
diff --git a/src/com/android/launcher2/PagedViewWidgetImageView.java b/src/com/android/launcher2/PagedViewWidgetImageView.java
index 844b33740..22db0abd8 100644
--- a/src/com/android/launcher2/PagedViewWidgetImageView.java
+++ b/src/com/android/launcher2/PagedViewWidgetImageView.java
@@ -17,6 +17,8 @@
package com.android.launcher2;
import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Insets;
import android.util.AttributeSet;
import android.widget.ImageView;
@@ -34,4 +36,22 @@ class PagedViewWidgetImageView extends ImageView {
super.requestLayout();
}
}
+
+ @Override
+ protected void onDraw(Canvas canvas) {
+
+ Insets insets = Insets.NONE;
+ if (getBackground() != null) {
+ insets = getBackground().getLayoutInsets();
+ }
+ canvas.save();
+ canvas.clipRect(getScrollX() + getPaddingLeft() + insets.left,
+ getScrollY() + getPaddingTop() + insets.top,
+ getScrollX() + getRight() - getLeft() - getPaddingRight() - insets.right,
+ getScrollY() + getBottom() - getTop() - getPaddingBottom() - insets.bottom);
+
+ super.onDraw(canvas);
+ canvas.restore();
+
+ }
}
diff --git a/src/com/android/launcher2/PendingAddItemInfo.java b/src/com/android/launcher2/PendingAddItemInfo.java
index 26e946efa..eaa2e4ddb 100644
--- a/src/com/android/launcher2/PendingAddItemInfo.java
+++ b/src/com/android/launcher2/PendingAddItemInfo.java
@@ -19,6 +19,7 @@ package com.android.launcher2;
import android.appwidget.AppWidgetHostView;
import android.appwidget.AppWidgetProviderInfo;
import android.content.ComponentName;
+import android.content.pm.ActivityInfo;
import android.os.Parcelable;
/**
@@ -31,6 +32,15 @@ class PendingAddItemInfo extends ItemInfo {
ComponentName componentName;
}
+class PendingAddShortcutInfo extends PendingAddItemInfo {
+
+ ActivityInfo shortcutActivityInfo;
+
+ public PendingAddShortcutInfo(ActivityInfo activityInfo) {
+ shortcutActivityInfo = activityInfo;
+ }
+}
+
class PendingAddWidgetInfo extends PendingAddItemInfo {
int minWidth;
int minHeight;
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index 905ad8a89..f562cbccb 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -2194,6 +2194,9 @@ public class Workspace extends SmoothPagedView
resizeOnDrop = true;
item.spanX = resultSpan[0];
item.spanY = resultSpan[1];
+ AppWidgetHostView awhv = (AppWidgetHostView) cell;
+ AppWidgetResizeFrame.updateWidgetSizeRanges(awhv, mLauncher, resultSpan[0],
+ resultSpan[1]);
}
if (mCurrentPage != screen && !hasMovedIntoHotseat) {
@@ -2767,7 +2770,8 @@ public class Workspace extends SmoothPagedView
ItemInfo info = (ItemInfo) d.dragInfo;
mTargetCell = findNearestArea((int) mDragViewVisualCenter[0],
- (int) mDragViewVisualCenter[1], 1, 1, mDragTargetLayout, mTargetCell);
+ (int) mDragViewVisualCenter[1], item.spanX, item.spanY,
+ mDragTargetLayout, mTargetCell);
setCurrentDropOverCell(mTargetCell[0], mTargetCell[1]);
@@ -2787,11 +2791,6 @@ public class Workspace extends SmoothPagedView
minSpanY = item.minSpanY;
}
- int[] reorderPosition = new int[2];
- reorderPosition = findNearestArea((int) mDragViewVisualCenter[0],
- (int) mDragViewVisualCenter[1], item.spanX, item.spanY, mDragTargetLayout,
- reorderPosition);
-
boolean nearestDropOccupied = mDragTargetLayout.isNearestDropLocationOccupied((int)
mDragViewVisualCenter[0], (int) mDragViewVisualCenter[1], item.spanX,
item.spanY, child, mTargetCell);
@@ -2802,8 +2801,9 @@ public class Workspace extends SmoothPagedView
mTargetCell[0], mTargetCell[1], item.spanX, item.spanY, false,
d.dragView.getDragVisualizeOffset(), d.dragView.getDragRegion());
} else if ((mDragMode == DRAG_MODE_NONE || mDragMode == DRAG_MODE_REORDER)
- && !mReorderAlarm.alarmPending() && (mLastReorderX != reorderPosition[0] ||
- mLastReorderY != reorderPosition[1])) {
+ && !mReorderAlarm.alarmPending() && (mLastReorderX != mTargetCell[0] ||
+ mLastReorderY != mTargetCell[1])) {
+
// Otherwise, if we aren't adding to or creating a folder and there's no pending
// reorder, then we schedule a reorder
ReorderAlarmListener listener = new ReorderAlarmListener(mDragViewVisualCenter,