diff options
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 Binary files differnew file mode 100644 index 000000000..8c15a7c86 --- /dev/null +++ b/res/drawable-hdpi/widget_container_holo.9.png diff --git a/res/drawable-hdpi/widget_preview_tile.png b/res/drawable-hdpi/widget_preview_tile.png Binary files differnew file mode 100644 index 000000000..caeddd1ce --- /dev/null +++ b/res/drawable-hdpi/widget_preview_tile.png diff --git a/res/drawable-mdpi/widget_container_holo.9.png b/res/drawable-mdpi/widget_container_holo.9.png Binary files differnew file mode 100644 index 000000000..db24457d6 --- /dev/null +++ b/res/drawable-mdpi/widget_container_holo.9.png diff --git a/res/drawable-mdpi/widget_preview_tile.png b/res/drawable-mdpi/widget_preview_tile.png Binary files differnew file mode 100644 index 000000000..9c7c4f77c --- /dev/null +++ b/res/drawable-mdpi/widget_preview_tile.png diff --git a/res/drawable-nodpi/wallpaper_01.jpg b/res/drawable-nodpi/wallpaper_01.jpg Binary files differnew file mode 100644 index 000000000..d7475b4c6 --- /dev/null +++ b/res/drawable-nodpi/wallpaper_01.jpg diff --git a/res/drawable-nodpi/wallpaper_01_small.jpg b/res/drawable-nodpi/wallpaper_01_small.jpg Binary files differnew file mode 100644 index 000000000..5cfe680c8 --- /dev/null +++ b/res/drawable-nodpi/wallpaper_01_small.jpg diff --git a/res/drawable-nodpi/wallpaper_02.jpg b/res/drawable-nodpi/wallpaper_02.jpg Binary files differnew file mode 100644 index 000000000..d9cb2178f --- /dev/null +++ b/res/drawable-nodpi/wallpaper_02.jpg diff --git a/res/drawable-nodpi/wallpaper_02_small.jpg b/res/drawable-nodpi/wallpaper_02_small.jpg Binary files differnew file mode 100644 index 000000000..c33eafaec --- /dev/null +++ b/res/drawable-nodpi/wallpaper_02_small.jpg diff --git a/res/drawable-nodpi/wallpaper_03.jpg b/res/drawable-nodpi/wallpaper_03.jpg Binary files differnew file mode 100644 index 000000000..136b3faff --- /dev/null +++ b/res/drawable-nodpi/wallpaper_03.jpg diff --git a/res/drawable-nodpi/wallpaper_03_small.jpg b/res/drawable-nodpi/wallpaper_03_small.jpg Binary files differnew file mode 100644 index 000000000..6ff225470 --- /dev/null +++ b/res/drawable-nodpi/wallpaper_03_small.jpg diff --git a/res/drawable-nodpi/wallpaper_04.jpg b/res/drawable-nodpi/wallpaper_04.jpg Binary files differnew file mode 100644 index 000000000..2ca3d05ed --- /dev/null +++ b/res/drawable-nodpi/wallpaper_04.jpg diff --git a/res/drawable-nodpi/wallpaper_04_small.jpg b/res/drawable-nodpi/wallpaper_04_small.jpg Binary files differnew file mode 100644 index 000000000..9a327526c --- /dev/null +++ b/res/drawable-nodpi/wallpaper_04_small.jpg diff --git a/res/drawable-nodpi/wallpaper_05.jpg b/res/drawable-nodpi/wallpaper_05.jpg Binary files differnew file mode 100644 index 000000000..e0b37709b --- /dev/null +++ b/res/drawable-nodpi/wallpaper_05.jpg diff --git a/res/drawable-nodpi/wallpaper_05_small.jpg b/res/drawable-nodpi/wallpaper_05_small.jpg Binary files differnew file mode 100644 index 000000000..2ae4a1860 --- /dev/null +++ b/res/drawable-nodpi/wallpaper_05_small.jpg diff --git a/res/drawable-nodpi/wallpaper_08.jpg b/res/drawable-nodpi/wallpaper_08.jpg Binary files differnew file mode 100644 index 000000000..0ae0eb2b7 --- /dev/null +++ b/res/drawable-nodpi/wallpaper_08.jpg diff --git a/res/drawable-nodpi/wallpaper_08_small.jpg b/res/drawable-nodpi/wallpaper_08_small.jpg Binary files differnew file mode 100644 index 000000000..1ca48ad49 --- /dev/null +++ b/res/drawable-nodpi/wallpaper_08_small.jpg diff --git a/res/drawable-nodpi/wallpaper_09.jpg b/res/drawable-nodpi/wallpaper_09.jpg Binary files differnew file mode 100644 index 000000000..c2f58459d --- /dev/null +++ b/res/drawable-nodpi/wallpaper_09.jpg diff --git a/res/drawable-nodpi/wallpaper_09_small.jpg b/res/drawable-nodpi/wallpaper_09_small.jpg Binary files differnew file mode 100644 index 000000000..0ac47252e --- /dev/null +++ b/res/drawable-nodpi/wallpaper_09_small.jpg diff --git a/res/drawable-nodpi/wallpaper_10.jpg b/res/drawable-nodpi/wallpaper_10.jpg Binary files differnew file mode 100644 index 000000000..7dfb66501 --- /dev/null +++ b/res/drawable-nodpi/wallpaper_10.jpg diff --git a/res/drawable-nodpi/wallpaper_10_small.jpg b/res/drawable-nodpi/wallpaper_10_small.jpg Binary files differnew file mode 100644 index 000000000..fedae8a3d --- /dev/null +++ b/res/drawable-nodpi/wallpaper_10_small.jpg diff --git a/res/drawable-nodpi/wallpaper_11.jpg b/res/drawable-nodpi/wallpaper_11.jpg Binary files differnew file mode 100644 index 000000000..bedf16722 --- /dev/null +++ b/res/drawable-nodpi/wallpaper_11.jpg diff --git a/res/drawable-nodpi/wallpaper_11_small.jpg b/res/drawable-nodpi/wallpaper_11_small.jpg Binary files differnew file mode 100644 index 000000000..76c3f7f95 --- /dev/null +++ b/res/drawable-nodpi/wallpaper_11_small.jpg diff --git a/res/drawable-nodpi/wallpaper_12.jpg b/res/drawable-nodpi/wallpaper_12.jpg Binary files differnew file mode 100644 index 000000000..ab987f88e --- /dev/null +++ b/res/drawable-nodpi/wallpaper_12.jpg diff --git a/res/drawable-nodpi/wallpaper_12_small.jpg b/res/drawable-nodpi/wallpaper_12_small.jpg Binary files differnew file mode 100644 index 000000000..da3fbf7da --- /dev/null +++ b/res/drawable-nodpi/wallpaper_12_small.jpg diff --git a/res/drawable-nodpi/wallpaper_architecture.jpg b/res/drawable-nodpi/wallpaper_architecture.jpg Binary files differdeleted file mode 100644 index 82aafb748..000000000 --- a/res/drawable-nodpi/wallpaper_architecture.jpg +++ /dev/null diff --git a/res/drawable-nodpi/wallpaper_bubblegum.jpg b/res/drawable-nodpi/wallpaper_bubblegum.jpg Binary files differdeleted file mode 100644 index e8a717d84..000000000 --- a/res/drawable-nodpi/wallpaper_bubblegum.jpg +++ /dev/null diff --git a/res/drawable-nodpi/wallpaper_canyon.jpg b/res/drawable-nodpi/wallpaper_canyon.jpg Binary files differdeleted file mode 100644 index 85aaba46b..000000000 --- a/res/drawable-nodpi/wallpaper_canyon.jpg +++ /dev/null diff --git a/res/drawable-nodpi/wallpaper_chroma.jpg b/res/drawable-nodpi/wallpaper_chroma.jpg Binary files differdeleted file mode 100644 index 7e9224380..000000000 --- a/res/drawable-nodpi/wallpaper_chroma.jpg +++ /dev/null diff --git a/res/drawable-nodpi/wallpaper_escape.jpg b/res/drawable-nodpi/wallpaper_escape.jpg Binary files differdeleted file mode 100644 index ced555b50..000000000 --- a/res/drawable-nodpi/wallpaper_escape.jpg +++ /dev/null diff --git a/res/drawable-nodpi/wallpaper_fidelity.jpg b/res/drawable-nodpi/wallpaper_fidelity.jpg Binary files differdeleted file mode 100644 index 1f1eb31ec..000000000 --- a/res/drawable-nodpi/wallpaper_fidelity.jpg +++ /dev/null diff --git a/res/drawable-nodpi/wallpaper_flora.jpg b/res/drawable-nodpi/wallpaper_flora.jpg Binary files differdeleted file mode 100644 index 964e37c35..000000000 --- a/res/drawable-nodpi/wallpaper_flora.jpg +++ /dev/null diff --git a/res/drawable-nodpi/wallpaper_kepler.jpg b/res/drawable-nodpi/wallpaper_kepler.jpg Binary files differdeleted file mode 100644 index 4afee4045..000000000 --- a/res/drawable-nodpi/wallpaper_kepler.jpg +++ /dev/null diff --git a/res/drawable-nodpi/wallpaper_leaf.jpg b/res/drawable-nodpi/wallpaper_leaf.jpg Binary files differdeleted file mode 100644 index 7157ddd22..000000000 --- a/res/drawable-nodpi/wallpaper_leaf.jpg +++ /dev/null diff --git a/res/drawable-nodpi/wallpaper_noir.jpg b/res/drawable-nodpi/wallpaper_noir.jpg Binary files differdeleted file mode 100644 index 196249508..000000000 --- a/res/drawable-nodpi/wallpaper_noir.jpg +++ /dev/null diff --git a/res/drawable-nodpi/wallpaper_outofthebox.jpg b/res/drawable-nodpi/wallpaper_outofthebox.jpg Binary files differdeleted file mode 100644 index 6049dccc4..000000000 --- a/res/drawable-nodpi/wallpaper_outofthebox.jpg +++ /dev/null diff --git a/res/drawable-sw600dp-nodpi/wallpaper_01.jpg b/res/drawable-sw600dp-nodpi/wallpaper_01.jpg Binary files differnew file mode 100644 index 000000000..6dd81b9bf --- /dev/null +++ b/res/drawable-sw600dp-nodpi/wallpaper_01.jpg diff --git a/res/drawable-sw600dp-nodpi/wallpaper_02.jpg b/res/drawable-sw600dp-nodpi/wallpaper_02.jpg Binary files differnew file mode 100644 index 000000000..a363f0fe0 --- /dev/null +++ b/res/drawable-sw600dp-nodpi/wallpaper_02.jpg diff --git a/res/drawable-sw600dp-nodpi/wallpaper_03.jpg b/res/drawable-sw600dp-nodpi/wallpaper_03.jpg Binary files differnew file mode 100644 index 000000000..be8a8b73f --- /dev/null +++ b/res/drawable-sw600dp-nodpi/wallpaper_03.jpg diff --git a/res/drawable-sw600dp-nodpi/wallpaper_04.jpg b/res/drawable-sw600dp-nodpi/wallpaper_04.jpg Binary files differnew file mode 100644 index 000000000..0c9e72b77 --- /dev/null +++ b/res/drawable-sw600dp-nodpi/wallpaper_04.jpg diff --git a/res/drawable-sw600dp-nodpi/wallpaper_05.jpg b/res/drawable-sw600dp-nodpi/wallpaper_05.jpg Binary files differnew file mode 100644 index 000000000..47013d309 --- /dev/null +++ b/res/drawable-sw600dp-nodpi/wallpaper_05.jpg diff --git a/res/drawable-sw600dp-nodpi/wallpaper_08.jpg b/res/drawable-sw600dp-nodpi/wallpaper_08.jpg Binary files differnew file mode 100644 index 000000000..2c3cbda6b --- /dev/null +++ b/res/drawable-sw600dp-nodpi/wallpaper_08.jpg diff --git a/res/drawable-sw600dp-nodpi/wallpaper_09.jpg b/res/drawable-sw600dp-nodpi/wallpaper_09.jpg Binary files differnew file mode 100644 index 000000000..885ec355b --- /dev/null +++ b/res/drawable-sw600dp-nodpi/wallpaper_09.jpg diff --git a/res/drawable-sw600dp-nodpi/wallpaper_10.jpg b/res/drawable-sw600dp-nodpi/wallpaper_10.jpg Binary files differnew file mode 100644 index 000000000..695808f33 --- /dev/null +++ b/res/drawable-sw600dp-nodpi/wallpaper_10.jpg diff --git a/res/drawable-sw600dp-nodpi/wallpaper_11.jpg b/res/drawable-sw600dp-nodpi/wallpaper_11.jpg Binary files differnew file mode 100644 index 000000000..94cc5401e --- /dev/null +++ b/res/drawable-sw600dp-nodpi/wallpaper_11.jpg diff --git a/res/drawable-sw600dp-nodpi/wallpaper_12.jpg b/res/drawable-sw600dp-nodpi/wallpaper_12.jpg Binary files differnew file mode 100644 index 000000000..614498b4f --- /dev/null +++ b/res/drawable-sw600dp-nodpi/wallpaper_12.jpg diff --git a/res/drawable-sw600dp-nodpi/wallpaper_architecture_small.jpg b/res/drawable-sw600dp-nodpi/wallpaper_architecture_small.jpg Binary files differdeleted file mode 100644 index f17d9e8a1..000000000 --- a/res/drawable-sw600dp-nodpi/wallpaper_architecture_small.jpg +++ /dev/null diff --git a/res/drawable-sw600dp-nodpi/wallpaper_bubblegum_small.jpg b/res/drawable-sw600dp-nodpi/wallpaper_bubblegum_small.jpg Binary files differdeleted file mode 100644 index 587581048..000000000 --- a/res/drawable-sw600dp-nodpi/wallpaper_bubblegum_small.jpg +++ /dev/null diff --git a/res/drawable-sw600dp-nodpi/wallpaper_canyon_small.jpg b/res/drawable-sw600dp-nodpi/wallpaper_canyon_small.jpg Binary files differdeleted file mode 100644 index 72513b4f4..000000000 --- a/res/drawable-sw600dp-nodpi/wallpaper_canyon_small.jpg +++ /dev/null diff --git a/res/drawable-sw600dp-nodpi/wallpaper_chroma_small.jpg b/res/drawable-sw600dp-nodpi/wallpaper_chroma_small.jpg Binary files differdeleted file mode 100644 index 781c2c7ec..000000000 --- a/res/drawable-sw600dp-nodpi/wallpaper_chroma_small.jpg +++ /dev/null diff --git a/res/drawable-sw600dp-nodpi/wallpaper_escape_small.jpg b/res/drawable-sw600dp-nodpi/wallpaper_escape_small.jpg Binary files differdeleted file mode 100644 index 3a1a9c12c..000000000 --- a/res/drawable-sw600dp-nodpi/wallpaper_escape_small.jpg +++ /dev/null diff --git a/res/drawable-sw600dp-nodpi/wallpaper_fidelity_small.jpg b/res/drawable-sw600dp-nodpi/wallpaper_fidelity_small.jpg Binary files differdeleted file mode 100644 index 01092cc3c..000000000 --- a/res/drawable-sw600dp-nodpi/wallpaper_fidelity_small.jpg +++ /dev/null diff --git a/res/drawable-sw600dp-nodpi/wallpaper_flora_small.jpg b/res/drawable-sw600dp-nodpi/wallpaper_flora_small.jpg Binary files differdeleted file mode 100644 index 7faebc9a4..000000000 --- a/res/drawable-sw600dp-nodpi/wallpaper_flora_small.jpg +++ /dev/null diff --git a/res/drawable-sw600dp-nodpi/wallpaper_kepler_small.jpg b/res/drawable-sw600dp-nodpi/wallpaper_kepler_small.jpg Binary files differdeleted file mode 100644 index dad79a274..000000000 --- a/res/drawable-sw600dp-nodpi/wallpaper_kepler_small.jpg +++ /dev/null diff --git a/res/drawable-sw600dp-nodpi/wallpaper_leaf_small.jpg b/res/drawable-sw600dp-nodpi/wallpaper_leaf_small.jpg Binary files differdeleted file mode 100644 index f37aab932..000000000 --- a/res/drawable-sw600dp-nodpi/wallpaper_leaf_small.jpg +++ /dev/null diff --git a/res/drawable-sw600dp-nodpi/wallpaper_noir_small.jpg b/res/drawable-sw600dp-nodpi/wallpaper_noir_small.jpg Binary files differdeleted file mode 100644 index 482a832f2..000000000 --- a/res/drawable-sw600dp-nodpi/wallpaper_noir_small.jpg +++ /dev/null diff --git a/res/drawable-sw600dp-nodpi/wallpaper_outofthebox_small.jpg b/res/drawable-sw600dp-nodpi/wallpaper_outofthebox_small.jpg Binary files differdeleted file mode 100644 index 0b4cde7c0..000000000 --- a/res/drawable-sw600dp-nodpi/wallpaper_outofthebox_small.jpg +++ /dev/null diff --git a/res/drawable-sw600dp-nodpi/wallpaper_architecture.jpg b/res/drawable-sw720dp-nodpi/wallpaper_architecture.jpg Binary files differindex fae9d4fbf..fae9d4fbf 100644 --- a/res/drawable-sw600dp-nodpi/wallpaper_architecture.jpg +++ b/res/drawable-sw720dp-nodpi/wallpaper_architecture.jpg diff --git a/res/drawable-nodpi/wallpaper_architecture_small.jpg b/res/drawable-sw720dp-nodpi/wallpaper_architecture_small.jpg Binary files differindex f17d9e8a1..f17d9e8a1 100644 --- a/res/drawable-nodpi/wallpaper_architecture_small.jpg +++ b/res/drawable-sw720dp-nodpi/wallpaper_architecture_small.jpg diff --git a/res/drawable-sw600dp-nodpi/wallpaper_bubblegum.jpg b/res/drawable-sw720dp-nodpi/wallpaper_bubblegum.jpg Binary files differindex d902912a7..d902912a7 100644 --- a/res/drawable-sw600dp-nodpi/wallpaper_bubblegum.jpg +++ b/res/drawable-sw720dp-nodpi/wallpaper_bubblegum.jpg diff --git a/res/drawable-nodpi/wallpaper_bubblegum_small.jpg b/res/drawable-sw720dp-nodpi/wallpaper_bubblegum_small.jpg Binary files differindex 587581048..587581048 100644 --- a/res/drawable-nodpi/wallpaper_bubblegum_small.jpg +++ b/res/drawable-sw720dp-nodpi/wallpaper_bubblegum_small.jpg diff --git a/res/drawable-sw600dp-nodpi/wallpaper_canyon.jpg b/res/drawable-sw720dp-nodpi/wallpaper_canyon.jpg Binary files differindex 96e3be533..96e3be533 100644 --- a/res/drawable-sw600dp-nodpi/wallpaper_canyon.jpg +++ b/res/drawable-sw720dp-nodpi/wallpaper_canyon.jpg diff --git a/res/drawable-nodpi/wallpaper_canyon_small.jpg b/res/drawable-sw720dp-nodpi/wallpaper_canyon_small.jpg Binary files differindex 72513b4f4..72513b4f4 100644 --- a/res/drawable-nodpi/wallpaper_canyon_small.jpg +++ b/res/drawable-sw720dp-nodpi/wallpaper_canyon_small.jpg diff --git a/res/drawable-sw600dp-nodpi/wallpaper_chroma.jpg b/res/drawable-sw720dp-nodpi/wallpaper_chroma.jpg Binary files differindex 355286e3e..355286e3e 100644 --- a/res/drawable-sw600dp-nodpi/wallpaper_chroma.jpg +++ b/res/drawable-sw720dp-nodpi/wallpaper_chroma.jpg diff --git a/res/drawable-nodpi/wallpaper_chroma_small.jpg b/res/drawable-sw720dp-nodpi/wallpaper_chroma_small.jpg Binary files differindex 781c2c7ec..781c2c7ec 100644 --- a/res/drawable-nodpi/wallpaper_chroma_small.jpg +++ b/res/drawable-sw720dp-nodpi/wallpaper_chroma_small.jpg diff --git a/res/drawable-sw600dp-nodpi/wallpaper_escape.jpg b/res/drawable-sw720dp-nodpi/wallpaper_escape.jpg Binary files differindex d192ebff5..d192ebff5 100644 --- a/res/drawable-sw600dp-nodpi/wallpaper_escape.jpg +++ b/res/drawable-sw720dp-nodpi/wallpaper_escape.jpg diff --git a/res/drawable-nodpi/wallpaper_escape_small.jpg b/res/drawable-sw720dp-nodpi/wallpaper_escape_small.jpg Binary files differindex 3a1a9c12c..3a1a9c12c 100644 --- a/res/drawable-nodpi/wallpaper_escape_small.jpg +++ b/res/drawable-sw720dp-nodpi/wallpaper_escape_small.jpg diff --git a/res/drawable-sw600dp-nodpi/wallpaper_fidelity.jpg b/res/drawable-sw720dp-nodpi/wallpaper_fidelity.jpg Binary files differindex d7ddef438..d7ddef438 100644 --- a/res/drawable-sw600dp-nodpi/wallpaper_fidelity.jpg +++ b/res/drawable-sw720dp-nodpi/wallpaper_fidelity.jpg diff --git a/res/drawable-nodpi/wallpaper_fidelity_small.jpg b/res/drawable-sw720dp-nodpi/wallpaper_fidelity_small.jpg Binary files differindex 01092cc3c..01092cc3c 100644 --- a/res/drawable-nodpi/wallpaper_fidelity_small.jpg +++ b/res/drawable-sw720dp-nodpi/wallpaper_fidelity_small.jpg diff --git a/res/drawable-sw600dp-nodpi/wallpaper_flora.jpg b/res/drawable-sw720dp-nodpi/wallpaper_flora.jpg Binary files differindex ecdf0becc..ecdf0becc 100644 --- a/res/drawable-sw600dp-nodpi/wallpaper_flora.jpg +++ b/res/drawable-sw720dp-nodpi/wallpaper_flora.jpg diff --git a/res/drawable-nodpi/wallpaper_flora_small.jpg b/res/drawable-sw720dp-nodpi/wallpaper_flora_small.jpg Binary files differindex 7faebc9a4..7faebc9a4 100644 --- a/res/drawable-nodpi/wallpaper_flora_small.jpg +++ b/res/drawable-sw720dp-nodpi/wallpaper_flora_small.jpg diff --git a/res/drawable-sw600dp-nodpi/wallpaper_kepler.jpg b/res/drawable-sw720dp-nodpi/wallpaper_kepler.jpg Binary files differindex c7c6c2b72..c7c6c2b72 100644 --- a/res/drawable-sw600dp-nodpi/wallpaper_kepler.jpg +++ b/res/drawable-sw720dp-nodpi/wallpaper_kepler.jpg diff --git a/res/drawable-nodpi/wallpaper_kepler_small.jpg b/res/drawable-sw720dp-nodpi/wallpaper_kepler_small.jpg Binary files differindex dad79a274..dad79a274 100644 --- a/res/drawable-nodpi/wallpaper_kepler_small.jpg +++ b/res/drawable-sw720dp-nodpi/wallpaper_kepler_small.jpg diff --git a/res/drawable-sw600dp-nodpi/wallpaper_leaf.jpg b/res/drawable-sw720dp-nodpi/wallpaper_leaf.jpg Binary files differindex 543d118f2..543d118f2 100644 --- a/res/drawable-sw600dp-nodpi/wallpaper_leaf.jpg +++ b/res/drawable-sw720dp-nodpi/wallpaper_leaf.jpg diff --git a/res/drawable-nodpi/wallpaper_leaf_small.jpg b/res/drawable-sw720dp-nodpi/wallpaper_leaf_small.jpg Binary files differindex f37aab932..f37aab932 100644 --- a/res/drawable-nodpi/wallpaper_leaf_small.jpg +++ b/res/drawable-sw720dp-nodpi/wallpaper_leaf_small.jpg diff --git a/res/drawable-sw600dp-nodpi/wallpaper_noir.jpg b/res/drawable-sw720dp-nodpi/wallpaper_noir.jpg Binary files differindex 283bf21da..283bf21da 100644 --- a/res/drawable-sw600dp-nodpi/wallpaper_noir.jpg +++ b/res/drawable-sw720dp-nodpi/wallpaper_noir.jpg diff --git a/res/drawable-nodpi/wallpaper_noir_small.jpg b/res/drawable-sw720dp-nodpi/wallpaper_noir_small.jpg Binary files differindex 482a832f2..482a832f2 100644 --- a/res/drawable-nodpi/wallpaper_noir_small.jpg +++ b/res/drawable-sw720dp-nodpi/wallpaper_noir_small.jpg diff --git a/res/drawable-sw600dp-nodpi/wallpaper_outofthebox.jpg b/res/drawable-sw720dp-nodpi/wallpaper_outofthebox.jpg Binary files differindex 1529dce4f..1529dce4f 100644 --- a/res/drawable-sw600dp-nodpi/wallpaper_outofthebox.jpg +++ b/res/drawable-sw720dp-nodpi/wallpaper_outofthebox.jpg diff --git a/res/drawable-nodpi/wallpaper_outofthebox_small.jpg b/res/drawable-sw720dp-nodpi/wallpaper_outofthebox_small.jpg Binary files differindex 0b4cde7c0..0b4cde7c0 100644 --- a/res/drawable-nodpi/wallpaper_outofthebox_small.jpg +++ b/res/drawable-sw720dp-nodpi/wallpaper_outofthebox_small.jpg diff --git a/res/drawable-xhdpi/wallpaper_01.jpg b/res/drawable-xhdpi/wallpaper_01.jpg Binary files differnew file mode 100644 index 000000000..5b8d1d598 --- /dev/null +++ b/res/drawable-xhdpi/wallpaper_01.jpg diff --git a/res/drawable-xhdpi/wallpaper_02.jpg b/res/drawable-xhdpi/wallpaper_02.jpg Binary files differnew file mode 100644 index 000000000..29cba1317 --- /dev/null +++ b/res/drawable-xhdpi/wallpaper_02.jpg diff --git a/res/drawable-xhdpi/wallpaper_03.jpg b/res/drawable-xhdpi/wallpaper_03.jpg Binary files differnew file mode 100644 index 000000000..5c165cf38 --- /dev/null +++ b/res/drawable-xhdpi/wallpaper_03.jpg diff --git a/res/drawable-xhdpi/wallpaper_04.jpg b/res/drawable-xhdpi/wallpaper_04.jpg Binary files differnew file mode 100644 index 000000000..2f0da9de7 --- /dev/null +++ b/res/drawable-xhdpi/wallpaper_04.jpg diff --git a/res/drawable-xhdpi/wallpaper_05.jpg b/res/drawable-xhdpi/wallpaper_05.jpg Binary files differnew file mode 100644 index 000000000..4ae7bb9ba --- /dev/null +++ b/res/drawable-xhdpi/wallpaper_05.jpg diff --git a/res/drawable-xhdpi/wallpaper_08.jpg b/res/drawable-xhdpi/wallpaper_08.jpg Binary files differnew file mode 100644 index 000000000..d091cb7b7 --- /dev/null +++ b/res/drawable-xhdpi/wallpaper_08.jpg diff --git a/res/drawable-xhdpi/wallpaper_09.jpg b/res/drawable-xhdpi/wallpaper_09.jpg Binary files differnew file mode 100644 index 000000000..7990d4c66 --- /dev/null +++ b/res/drawable-xhdpi/wallpaper_09.jpg diff --git a/res/drawable-xhdpi/wallpaper_10.jpg b/res/drawable-xhdpi/wallpaper_10.jpg Binary files differnew file mode 100644 index 000000000..1fd138891 --- /dev/null +++ b/res/drawable-xhdpi/wallpaper_10.jpg diff --git a/res/drawable-xhdpi/wallpaper_11.jpg b/res/drawable-xhdpi/wallpaper_11.jpg Binary files differnew file mode 100644 index 000000000..b1609b9f9 --- /dev/null +++ b/res/drawable-xhdpi/wallpaper_11.jpg diff --git a/res/drawable-xhdpi/wallpaper_12.jpg b/res/drawable-xhdpi/wallpaper_12.jpg Binary files differnew file mode 100644 index 000000000..ed7fa0f6d --- /dev/null +++ b/res/drawable-xhdpi/wallpaper_12.jpg diff --git a/res/drawable-xhdpi/wallpaper_architecture.jpg b/res/drawable-xhdpi/wallpaper_architecture.jpg Binary files differdeleted file mode 100644 index 7605f753b..000000000 --- a/res/drawable-xhdpi/wallpaper_architecture.jpg +++ /dev/null diff --git a/res/drawable-xhdpi/wallpaper_architecture_small.jpg b/res/drawable-xhdpi/wallpaper_architecture_small.jpg Binary files differdeleted file mode 100644 index f17d9e8a1..000000000 --- a/res/drawable-xhdpi/wallpaper_architecture_small.jpg +++ /dev/null diff --git a/res/drawable-xhdpi/wallpaper_bubblegum.jpg b/res/drawable-xhdpi/wallpaper_bubblegum.jpg Binary files differdeleted file mode 100644 index d6c132990..000000000 --- a/res/drawable-xhdpi/wallpaper_bubblegum.jpg +++ /dev/null diff --git a/res/drawable-xhdpi/wallpaper_bubblegum_small.jpg b/res/drawable-xhdpi/wallpaper_bubblegum_small.jpg Binary files differdeleted file mode 100644 index 587581048..000000000 --- a/res/drawable-xhdpi/wallpaper_bubblegum_small.jpg +++ /dev/null diff --git a/res/drawable-xhdpi/wallpaper_canyon.jpg b/res/drawable-xhdpi/wallpaper_canyon.jpg Binary files differdeleted file mode 100644 index 7c3ff3a98..000000000 --- a/res/drawable-xhdpi/wallpaper_canyon.jpg +++ /dev/null diff --git a/res/drawable-xhdpi/wallpaper_canyon_small.jpg b/res/drawable-xhdpi/wallpaper_canyon_small.jpg Binary files differdeleted file mode 100644 index 72513b4f4..000000000 --- a/res/drawable-xhdpi/wallpaper_canyon_small.jpg +++ /dev/null diff --git a/res/drawable-xhdpi/wallpaper_chroma.jpg b/res/drawable-xhdpi/wallpaper_chroma.jpg Binary files differdeleted file mode 100644 index 6f8c85ead..000000000 --- a/res/drawable-xhdpi/wallpaper_chroma.jpg +++ /dev/null diff --git a/res/drawable-xhdpi/wallpaper_chroma_small.jpg b/res/drawable-xhdpi/wallpaper_chroma_small.jpg Binary files differdeleted file mode 100644 index 781c2c7ec..000000000 --- a/res/drawable-xhdpi/wallpaper_chroma_small.jpg +++ /dev/null diff --git a/res/drawable-xhdpi/wallpaper_escape.jpg b/res/drawable-xhdpi/wallpaper_escape.jpg Binary files differdeleted file mode 100644 index 09c9866eb..000000000 --- a/res/drawable-xhdpi/wallpaper_escape.jpg +++ /dev/null diff --git a/res/drawable-xhdpi/wallpaper_escape_small.jpg b/res/drawable-xhdpi/wallpaper_escape_small.jpg Binary files differdeleted file mode 100644 index 3a1a9c12c..000000000 --- a/res/drawable-xhdpi/wallpaper_escape_small.jpg +++ /dev/null diff --git a/res/drawable-xhdpi/wallpaper_fidelity.jpg b/res/drawable-xhdpi/wallpaper_fidelity.jpg Binary files differdeleted file mode 100644 index 38b15a529..000000000 --- a/res/drawable-xhdpi/wallpaper_fidelity.jpg +++ /dev/null diff --git a/res/drawable-xhdpi/wallpaper_fidelity_small.jpg b/res/drawable-xhdpi/wallpaper_fidelity_small.jpg Binary files differdeleted file mode 100644 index 01092cc3c..000000000 --- a/res/drawable-xhdpi/wallpaper_fidelity_small.jpg +++ /dev/null diff --git a/res/drawable-xhdpi/wallpaper_flora.jpg b/res/drawable-xhdpi/wallpaper_flora.jpg Binary files differdeleted file mode 100644 index 6fdada97c..000000000 --- a/res/drawable-xhdpi/wallpaper_flora.jpg +++ /dev/null diff --git a/res/drawable-xhdpi/wallpaper_flora_small.jpg b/res/drawable-xhdpi/wallpaper_flora_small.jpg Binary files differdeleted file mode 100644 index 7faebc9a4..000000000 --- a/res/drawable-xhdpi/wallpaper_flora_small.jpg +++ /dev/null diff --git a/res/drawable-xhdpi/wallpaper_kepler.jpg b/res/drawable-xhdpi/wallpaper_kepler.jpg Binary files differdeleted file mode 100644 index 45ce15c73..000000000 --- a/res/drawable-xhdpi/wallpaper_kepler.jpg +++ /dev/null diff --git a/res/drawable-xhdpi/wallpaper_kepler_small.jpg b/res/drawable-xhdpi/wallpaper_kepler_small.jpg Binary files differdeleted file mode 100644 index dad79a274..000000000 --- a/res/drawable-xhdpi/wallpaper_kepler_small.jpg +++ /dev/null diff --git a/res/drawable-xhdpi/wallpaper_leaf.jpg b/res/drawable-xhdpi/wallpaper_leaf.jpg Binary files differdeleted file mode 100644 index c8cc7fe5f..000000000 --- a/res/drawable-xhdpi/wallpaper_leaf.jpg +++ /dev/null diff --git a/res/drawable-xhdpi/wallpaper_leaf_small.jpg b/res/drawable-xhdpi/wallpaper_leaf_small.jpg Binary files differdeleted file mode 100644 index f37aab932..000000000 --- a/res/drawable-xhdpi/wallpaper_leaf_small.jpg +++ /dev/null diff --git a/res/drawable-xhdpi/wallpaper_noir.jpg b/res/drawable-xhdpi/wallpaper_noir.jpg Binary files differdeleted file mode 100644 index 535eda897..000000000 --- a/res/drawable-xhdpi/wallpaper_noir.jpg +++ /dev/null diff --git a/res/drawable-xhdpi/wallpaper_noir_small.jpg b/res/drawable-xhdpi/wallpaper_noir_small.jpg Binary files differdeleted file mode 100644 index 482a832f2..000000000 --- a/res/drawable-xhdpi/wallpaper_noir_small.jpg +++ /dev/null diff --git a/res/drawable-xhdpi/wallpaper_outofthebox.jpg b/res/drawable-xhdpi/wallpaper_outofthebox.jpg Binary files differdeleted file mode 100644 index f3ad2ee6f..000000000 --- a/res/drawable-xhdpi/wallpaper_outofthebox.jpg +++ /dev/null diff --git a/res/drawable-xhdpi/wallpaper_outofthebox_small.jpg b/res/drawable-xhdpi/wallpaper_outofthebox_small.jpg Binary files differdeleted file mode 100644 index 0b4cde7c0..000000000 --- a/res/drawable-xhdpi/wallpaper_outofthebox_small.jpg +++ /dev/null diff --git a/res/drawable-xhdpi/widget_container_holo.9.png b/res/drawable-xhdpi/widget_container_holo.9.png Binary files differnew file mode 100644 index 000000000..1313fe70d --- /dev/null +++ b/res/drawable-xhdpi/widget_container_holo.9.png diff --git a/res/drawable-xhdpi/widget_preview_tile.png b/res/drawable-xhdpi/widget_preview_tile.png Binary files differnew file mode 100644 index 000000000..60238671e --- /dev/null +++ b/res/drawable-xhdpi/widget_preview_tile.png 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, |