Reconcile with jb-mr1-factory-release jb-mr1-release - do not merge
Change-Id: Ia95ceb234c77dafcedb79274226f4bd279c63c79
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 9ae31d7..adb6ef3 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -99,15 +99,6 @@
android:resource="@xml/wallpaper_picker_preview" />
</activity>
- <activity android:name="com.android.launcher2.RocketLauncher"
- android:label="@string/dream_name"
- android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
- <intent-filter>
- <action android:name="android.service.dreams.DreamService" />
- <category android:name="android.intent.category.DEFAULT" />
- </intent-filter>
- </activity>
-
<!-- Intent received used to prepopulate the default workspace. -->
<receiver
android:name="com.android.launcher2.PreloadReceiver"
diff --git a/res/drawable-xhdpi/wallpaper_01.jpg b/res/drawable-xhdpi/wallpaper_01.jpg
index 5b8d1d5..da9fa91 100644
--- a/res/drawable-xhdpi/wallpaper_01.jpg
+++ 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
index 29cba13..ee949aa 100644
--- a/res/drawable-xhdpi/wallpaper_02.jpg
+++ 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
index 5c165cf..9931ca2 100644
--- a/res/drawable-xhdpi/wallpaper_03.jpg
+++ 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
index 2f0da9d..306c8cd 100644
--- a/res/drawable-xhdpi/wallpaper_04.jpg
+++ 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
index 4ae7bb9..0735f5f 100644
--- a/res/drawable-xhdpi/wallpaper_05.jpg
+++ 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
index d091cb7..3fa6811 100644
--- a/res/drawable-xhdpi/wallpaper_08.jpg
+++ 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
index 7990d4c..cd062a6 100644
--- a/res/drawable-xhdpi/wallpaper_09.jpg
+++ 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
index 1fd1388..02b441e 100644
--- a/res/drawable-xhdpi/wallpaper_10.jpg
+++ 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
index b1609b9..39490ac 100644
--- a/res/drawable-xhdpi/wallpaper_11.jpg
+++ 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
index ed7fa0f..d1ca450 100644
--- a/res/drawable-xhdpi/wallpaper_12.jpg
+++ b/res/drawable-xhdpi/wallpaper_12.jpg
Binary files differ
diff --git a/res/layout-land/workspace_cling.xml b/res/layout-land/workspace_cling.xml
index b66f1bd..b035aa1 100644
--- a/res/layout-land/workspace_cling.xml
+++ b/res/layout-land/workspace_cling.xml
@@ -16,6 +16,8 @@
<com.android.launcher2.Cling
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
launcher:drawIdentifier="workspace_landscape">
<FrameLayout
android:layout_width="match_parent"
@@ -28,6 +30,8 @@
android:orientation="vertical">
<TextView
style="@style/ClingTitleText"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
android:text="@string/workspace_cling_title" />
<TextView
style="@style/ClingText"
@@ -46,6 +50,8 @@
android:text="@string/workspace_cling_open_all_apps" />
<Button
style="@style/ClingButton"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
android:layout_marginBottom="15dp"
android:layout_marginRight="10dp"
android:layout_gravity="bottom|right"
diff --git a/res/layout-port/workspace_cling.xml b/res/layout-port/workspace_cling.xml
index 10e6976..738e2c5 100644
--- a/res/layout-port/workspace_cling.xml
+++ b/res/layout-port/workspace_cling.xml
@@ -16,6 +16,8 @@
<com.android.launcher2.Cling
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
launcher:drawIdentifier="workspace_portrait">
<FrameLayout
android:layout_width="match_parent"
@@ -29,6 +31,8 @@
android:orientation="vertical">
<TextView
style="@style/ClingTitleText"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
android:text="@string/workspace_cling_title" />
<TextView
style="@style/ClingText"
@@ -49,6 +53,8 @@
android:text="@string/workspace_cling_open_all_apps" />
<Button
style="@style/ClingButton"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
android:layout_marginBottom="15dp"
android:layout_marginRight="10dp"
android:layout_gravity="bottom|right"
diff --git a/res/layout-sw720dp/workspace_cling.xml b/res/layout-sw720dp/workspace_cling.xml
index 10e6976..738e2c5 100644
--- a/res/layout-sw720dp/workspace_cling.xml
+++ b/res/layout-sw720dp/workspace_cling.xml
@@ -16,6 +16,8 @@
<com.android.launcher2.Cling
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
launcher:drawIdentifier="workspace_portrait">
<FrameLayout
android:layout_width="match_parent"
@@ -29,6 +31,8 @@
android:orientation="vertical">
<TextView
style="@style/ClingTitleText"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
android:text="@string/workspace_cling_title" />
<TextView
style="@style/ClingText"
@@ -49,6 +53,8 @@
android:text="@string/workspace_cling_open_all_apps" />
<Button
style="@style/ClingButton"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
android:layout_marginBottom="15dp"
android:layout_marginRight="10dp"
android:layout_gravity="bottom|right"
diff --git a/res/layout/custom_workspace_cling.xml b/res/layout/custom_workspace_cling.xml
index 5bdc587..0fdb575 100644
--- a/res/layout/custom_workspace_cling.xml
+++ b/res/layout/custom_workspace_cling.xml
@@ -17,6 +17,8 @@
<com.android.launcher2.Cling
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
launcher:drawIdentifier="workspace_custom">
<TextView
android:layout_width="wrap_content"
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 63a0972..a1bfb2e 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -28,12 +28,12 @@
<string name="pick_wallpaper" msgid="5630222540525626723">"ልጥፎች"</string>
<string name="activity_not_found" msgid="217823393239365967">"ትግበራ አልተጫነም።"</string>
<string name="widgets_tab_label" msgid="9145860100000983599">" ፍርግሞች"</string>
- <string name="long_press_widget_to_add" msgid="7395697462851217506">"ፍርግም ለማንሳት ንካ & በመጫን ያዝ"</string>
+ <string name="long_press_widget_to_add" msgid="7395697462851217506">"ፍርግም ለማንሳት ይንክ እና በመጫን ይያዙ"</string>
<string name="market" msgid="2652226429823445833">"ሸምት"</string>
<string name="external_drop_widget_error" msgid="2285187188524172774">"እዚህ የመነሻ ማያ ላይ ንጥል ማኖር አልተቻለም።"</string>
<string name="external_drop_widget_pick_title" msgid="7040647073452295370">"ለመፍጠር ምግብር ምረጥ"</string>
<string name="rename_folder_label" msgid="5646236631298452787">"አቃፊ ስም"</string>
- <string name="rename_folder_title" msgid="4544573104191526550">"አቃፊእንደገና ሰይም"</string>
+ <string name="rename_folder_title" msgid="4544573104191526550">"አቃፊ እንደገና ሰይም"</string>
<string name="rename_action" msgid="6016003384693240896">"እሺ"</string>
<string name="cancel_action" msgid="3811860427489435048">"ይቅር"</string>
<string name="menu_item_add_item" msgid="6233177331075781114">"ወደ መነሻ ማያ አክል"</string>
@@ -72,17 +72,17 @@
<string name="cab_menu_delete_app" msgid="4089398025537640349">"ትግበራ አራግፍ"</string>
<string name="cab_menu_app_info" msgid="914548323652698884">"የትግበራ ዝርዝር"</string>
<string name="cab_app_selection_text" msgid="6378522164293415735">"1 መተግበሪያ ተመርጧል"</string>
- <string name="cab_widget_selection_text" msgid="962527270506951955">"1 ዊድጌት ተመርጧል"</string>
+ <string name="cab_widget_selection_text" msgid="962527270506951955">"1 ፍርግም ተመርጧል"</string>
<string name="cab_folder_selection_text" msgid="8916111874189565067">"1 አቃፊ ተመርጧል"</string>
<string name="cab_shortcut_selection_text" msgid="8115847384500412878">"1 አቋራጭ ተመርጧል"</string>
<string name="permlab_install_shortcut" msgid="1201690825493376489">"አቋራጮችን ጫን።"</string>
<string name="permdesc_install_shortcut" msgid="8634424803272077038">"መተግበሪያ ያለተጠቃሚ ጣልቃ ገብነት አቋራጭ ለማከል ይፈቅዳል።"</string>
<string name="permlab_uninstall_shortcut" msgid="7696645932555926449">"አቋራጮችን አራግፍ"</string>
<string name="permdesc_uninstall_shortcut" msgid="274355570620220977">"ያለተጠቃሚ ጣልቃ ገብነት አቋራጭ ለማስወገድ ለመተግበሪያ ይፈቅዳል።"</string>
- <string name="permlab_read_settings" msgid="3452408290738106747">"የመነሻቅንብሮች እና አቋራጮችን አንብብ"</string>
- <string name="permdesc_read_settings" msgid="5788109303585403679">"ቅንጅቶችን እና አቋራጮችን በመነሻ ለማንበብ ለትግበራ ይፈቅዳል።"</string>
+ <string name="permlab_read_settings" msgid="3452408290738106747">"የመነሻ ቅንብሮች እና አቋራጮችን ያንብቡ"</string>
+ <string name="permdesc_read_settings" msgid="5788109303585403679">"ቅንብሮችን እና አቋራጮችን በመነሻ ለማንበብ ለትግበራ ይፈቅዳል።"</string>
<string name="permlab_write_settings" msgid="1360567537236705628">"መነሻ ቅንብሮች እና አቋራጮች ፃፍ"</string>
- <string name="permdesc_write_settings" msgid="8530105489115785531">"ቅንጅቶችን እና አቋራጮችን በመነሻ ለመለወጥ ለመተግበሪያ ይፈቅዳል።"</string>
+ <string name="permdesc_write_settings" msgid="8530105489115785531">"ቅንብሮችን እና አቋራጮችን በመነሻ ለመለወጥ ለመተግበሪያ ይፈቅዳል።"</string>
<string name="gadget_error_text" msgid="8359351016167075858">"ፍርግም የመጫን ችግር"</string>
<string name="uninstall_system_app_text" msgid="6429814133777046491">"ይህ የስርዓት ትግበራ ነው እና አለማራገፍ አይቻልም።"</string>
<string name="dream_name" msgid="2847171357608437154">"የሮኬት ማስነሻ"</string>
@@ -92,14 +92,14 @@
<string name="workspace_scroll_format" msgid="1704767047951143301">"መነሻ ማያ ገጽ %1$d ከ%2$d"</string>
<string name="apps_customize_apps_scroll_format" msgid="5494241912377704885">"Appsገጽ %1$d የ %2$d"</string>
<string name="apps_customize_widgets_scroll_format" msgid="5383009742241717437">"ፍርግሞች ገጽ %1$d የ %2$d"</string>
- <string name="workspace_cling_title" msgid="738396473989890567">"እቤትህ እንዳለህ ሆነሀ ዘና በል"</string>
- <string name="workspace_cling_move_item" msgid="791013895761065070">"ተወዳጅ መተግበሪያዎችህን እዚህ ላይ ማስቀመጥ ትችላለህ፡፡"</string>
- <string name="workspace_cling_open_all_apps" msgid="2459977609848572588">"ሁሉንም መተግበሪያዎችህን ለማየት፣ ክቡን ንካ::"</string>
- <string name="all_apps_cling_title" msgid="2559734712581447107">"አንዳንድ መተግበሪያዎች ምረጥ"</string>
- <string name="all_apps_cling_add_item" msgid="5665035103260318891">"ወደ መነሻ ማያህ፣ መተግበሪያ ለማከል፣ ንካውና & ያዘው፡፡"</string>
- <string name="folder_cling_title" msgid="4308949882377840953">"መተግበሪያዎችህን ከዓቃፊዎች ጋር አደራጅ"</string>
- <string name="folder_cling_move_item" msgid="270598675060435169">"መተግበሪያ ለማንቀሳቀስ፣ ንካው እና & ያዘው::"</string>
- <string name="folder_cling_create_folder" msgid="8352867485656129478">"በመነሻ ማያህ ላይ አዲስ ዓቃፊ ለመፍጠር፣ አንዱን መተግበሪያ በሌላው ላይ ቆልል፡፡"</string>
+ <string name="workspace_cling_title" msgid="738396473989890567">"እቤትዎ እንዳሉ ሆነው ዘና ይበሉ"</string>
+ <string name="workspace_cling_move_item" msgid="791013895761065070">"ተወዳጅ መተግበሪያዎችዎን እዚህ ላይ ማስቀመጥ ይችላሉ።"</string>
+ <string name="workspace_cling_open_all_apps" msgid="2459977609848572588">"ሁሉንም መተግበሪያዎችዎን ለማየት፣ ክቡን ይንኩ"</string>
+ <string name="all_apps_cling_title" msgid="2559734712581447107">"አንዳንድ መተግበሪያዎችን ይምረጡ"</string>
+ <string name="all_apps_cling_add_item" msgid="5665035103260318891">"ወደ መነሻ ማያዎ፣ መተግበሪያ ለማከል፣ ይንኩት እና ይያዙ።"</string>
+ <string name="folder_cling_title" msgid="4308949882377840953">"መተግበሪያዎችዎን ከዓቃፊዎች ጋር ያደራጁ"</string>
+ <string name="folder_cling_move_item" msgid="270598675060435169">"መተግበሪያ ለማንቀሳቀስ፣ ይንኩት እና ይያዙት"</string>
+ <string name="folder_cling_create_folder" msgid="8352867485656129478">"በመነሻ ማያዎ ላይ አዲስ ዓቃፊ ለመፍጠር፣ አንዱን መተግበሪያ በሌላው ላይ ይቆልሉ።"</string>
<string name="cling_dismiss" msgid="2780907108735868381">"እሺ"</string>
<string name="folder_opened" msgid="1262064100943801533">"አቃፊ ተከፍቷል፣ <xliff:g id="WIDTH">%1$d</xliff:g> በ <xliff:g id="HEIGHT">%2$d</xliff:g>"</string>
<string name="folder_tap_to_close" msgid="1335478160661137579">"አቃፊን ለመዝጋት ንካ"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 5dd726a..7e49aef 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -20,7 +20,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="application_name" msgid="8424725141379931883">"Покретач"</string>
- <string name="home" msgid="5921706419368316758">"Кућни"</string>
+ <string name="home" msgid="5921706419368316758">"Почетна"</string>
<string name="uid_name" msgid="3371120195364560632">"Основне Android апликације"</string>
<string name="folder_name" msgid="8551881338202938211"></string>
<string name="chooser_wallpaper" msgid="6063168087625352235">"Избор позадине из"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index f5eeab1..fe30775 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -27,11 +27,11 @@
<string name="wallpaper_instructions" msgid="4215640646180727542">"设置壁纸"</string>
<string name="pick_wallpaper" msgid="5630222540525626723">"壁纸"</string>
<string name="activity_not_found" msgid="217823393239365967">"未安装该应用。"</string>
- <string name="widgets_tab_label" msgid="9145860100000983599">"窗口小部件"</string>
- <string name="long_press_widget_to_add" msgid="7395697462851217506">"触摸并按住可选取窗口小部件。"</string>
+ <string name="widgets_tab_label" msgid="9145860100000983599">"小部件"</string>
+ <string name="long_press_widget_to_add" msgid="7395697462851217506">"触摸并按住可选取小部件。"</string>
<string name="market" msgid="2652226429823445833">"购买"</string>
<string name="external_drop_widget_error" msgid="2285187188524172774">"无法将项拖放到此主屏幕上。"</string>
- <string name="external_drop_widget_pick_title" msgid="7040647073452295370">"选择要处理拖放操作的窗口小部件"</string>
+ <string name="external_drop_widget_pick_title" msgid="7040647073452295370">"选择要创建的小部件"</string>
<string name="rename_folder_label" msgid="5646236631298452787">"文件夹名称"</string>
<string name="rename_folder_title" msgid="4544573104191526550">"重命名文件夹"</string>
<string name="rename_action" msgid="6016003384693240896">"确定"</string>
@@ -39,12 +39,12 @@
<string name="menu_item_add_item" msgid="6233177331075781114">"添加到主屏幕"</string>
<string name="group_applications" msgid="2103752818818161976">"应用"</string>
<string name="group_shortcuts" msgid="9133529424900391877">"快捷方式"</string>
- <string name="group_widgets" msgid="6704978494073105844">"窗口小部件"</string>
+ <string name="group_widgets" msgid="6704978494073105844">"小部件"</string>
<string name="group_wallpapers" msgid="1568191644272224858">"壁纸"</string>
<string name="completely_out_of_space" msgid="1759078539443491182">"您的主屏幕上没有空间了。"</string>
<string name="out_of_space" msgid="8365249326091984698">"此主屏幕上已没有空间。"</string>
<string name="hotseat_out_of_space" msgid="6304886797358479361">"底部区域已无空间。"</string>
- <string name="invalid_hotseat_item" msgid="6545340627805449250">"该窗口小部件太大,超出基座区域可用空间。"</string>
+ <string name="invalid_hotseat_item" msgid="6545340627805449250">"该小部件太大,超出基座区域可用空间。"</string>
<string name="shortcut_installed" msgid="7071557296331322355">"已创建“<xliff:g id="NAME">%s</xliff:g>”快捷方式。"</string>
<string name="shortcut_uninstalled" msgid="2129499669449749995">"已删除“<xliff:g id="NAME">%s</xliff:g>”快捷方式。"</string>
<string name="shortcut_duplicate" msgid="4757756326465060694">"“<xliff:g id="NAME">%s</xliff:g>”快捷方式已存在。"</string>
@@ -72,7 +72,7 @@
<string name="cab_menu_delete_app" msgid="4089398025537640349">"卸载该应用"</string>
<string name="cab_menu_app_info" msgid="914548323652698884">"应用详情"</string>
<string name="cab_app_selection_text" msgid="6378522164293415735">"选中了 1 个应用"</string>
- <string name="cab_widget_selection_text" msgid="962527270506951955">"已选中 1 个窗口小部件"</string>
+ <string name="cab_widget_selection_text" msgid="962527270506951955">"已选中 1 个小部件"</string>
<string name="cab_folder_selection_text" msgid="8916111874189565067">"已选中 1 个文件夹"</string>
<string name="cab_shortcut_selection_text" msgid="8115847384500412878">"已选中 1 个快捷方式"</string>
<string name="permlab_install_shortcut" msgid="1201690825493376489">"安装快捷方式"</string>
@@ -83,7 +83,7 @@
<string name="permdesc_read_settings" msgid="5788109303585403679">"允许应用读取主屏幕中的设置和快捷方式。"</string>
<string name="permlab_write_settings" msgid="1360567537236705628">"写入主屏幕的设置和快捷方式"</string>
<string name="permdesc_write_settings" msgid="8530105489115785531">"允许应用更改主屏幕中的设置和快捷方式。"</string>
- <string name="gadget_error_text" msgid="8359351016167075858">"载入窗口小部件时出现问题"</string>
+ <string name="gadget_error_text" msgid="8359351016167075858">"载入小部件时出现问题"</string>
<string name="uninstall_system_app_text" msgid="6429814133777046491">"这是系统应用,无法卸载。"</string>
<string name="dream_name" msgid="2847171357608437154">"Rocket Launcher"</string>
<string name="folder_hint_text" msgid="8633351560105748141">"未命名文件夹"</string>
@@ -91,7 +91,7 @@
<string name="default_scroll_format" msgid="4057140866420001240">"第 %1$d 页,共 %2$d 页"</string>
<string name="workspace_scroll_format" msgid="1704767047951143301">"主屏幕 %1$d(共 %2$d 个)"</string>
<string name="apps_customize_apps_scroll_format" msgid="5494241912377704885">"应用:第 %1$d 页,共 %2$d 页"</string>
- <string name="apps_customize_widgets_scroll_format" msgid="5383009742241717437">"窗口小部件:第 %1$d 页,共 %2$d 页"</string>
+ <string name="apps_customize_widgets_scroll_format" msgid="5383009742241717437">"小部件:第 %1$d 页,共 %2$d 页"</string>
<string name="workspace_cling_title" msgid="738396473989890567">"您的主屏幕您做主"</string>
<string name="workspace_cling_move_item" msgid="791013895761065070">"您可以在此处放置自己喜爱的应用。"</string>
<string name="workspace_cling_open_all_apps" msgid="2459977609848572588">"要查看您的所有应用,请触摸该圆圈。"</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 04e45ae..0ea12c4 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -266,12 +266,12 @@
<!-- Clings -->
<!-- Dummy string [CHAR_LIMIT=40] -->
- <add-resource type="string" name="custom_workspace_cling_title_1"/>
+ <string name="custom_workspace_cling_title_1"></string>
<!-- Dummy string [CHAR_LIMIT=60] -->
- <add-resource type="string" name="custom_workspace_cling_description_1"/>
+ <string name="custom_workspace_cling_description_1"></string>
<!-- Dummy string [CHAR_LIMIT=40] -->
- <add-resource type="string" name="custom_workspace_cling_title_2"/>
+ <string name="custom_workspace_cling_title_2"></string>
<!-- Dummy string [CHAR_LIMIT=60] -->
- <add-resource type="string" name="custom_workspace_cling_description_2"/>
+ <string name="custom_workspace_cling_description_2"></string>
</resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 0960269..c3fe7ef 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -46,6 +46,8 @@
<item name="android:shadowRadius">2.0</item>
</style>
<style name="ClingText">
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">wrap_content</item>
<item name="android:textSize">15sp</item>
<item name="android:textColor">#FFFFFF</item>
<item name="android:shadowColor">#000000</item>
diff --git a/src/com/android/launcher2/AppsCustomizeTabHost.java b/src/com/android/launcher2/AppsCustomizeTabHost.java
index 5b33c31..96ec33e 100644
--- a/src/com/android/launcher2/AppsCustomizeTabHost.java
+++ b/src/com/android/launcher2/AppsCustomizeTabHost.java
@@ -352,11 +352,6 @@
// force building the layer, so you don't get a blip early in an animation
// when the layer is created layer
buildLayer();
-
- // Let the GC system know that now is a good time to do any garbage
- // collection; makes it less likely we'll get a GC during the all apps
- // to workspace animation
- System.gc();
}
}
diff --git a/src/com/android/launcher2/DragLayer.java b/src/com/android/launcher2/DragLayer.java
index fed0ad9..e870d0a 100644
--- a/src/com/android/launcher2/DragLayer.java
+++ b/src/com/android/launcher2/DragLayer.java
@@ -167,6 +167,9 @@
@Override
public boolean onInterceptHoverEvent(MotionEvent ev) {
+ if (mLauncher == null || mLauncher.getWorkspace() == null) {
+ return false;
+ }
Folder currentFolder = mLauncher.getWorkspace().getOpenFolder();
if (currentFolder == null) {
return false;
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index 6fcda8a..c221815 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -1384,39 +1384,54 @@
// also will cancel mWaitingForResult.
closeSystemDialogs();
- boolean alreadyOnHome = ((intent.getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT)
+ final boolean alreadyOnHome =
+ ((intent.getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT)
!= Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
- Folder openFolder = mWorkspace.getOpenFolder();
- // In all these cases, only animate if we're already on home
- mWorkspace.exitWidgetResizeMode();
- if (alreadyOnHome && mState == State.WORKSPACE && !mWorkspace.isTouchActive() &&
- openFolder == null) {
- mWorkspace.moveToDefaultScreen(true);
- }
+ Runnable processIntent = new Runnable() {
+ public void run() {
+ Folder openFolder = mWorkspace.getOpenFolder();
+ // In all these cases, only animate if we're already on home
+ mWorkspace.exitWidgetResizeMode();
+ if (alreadyOnHome && mState == State.WORKSPACE && !mWorkspace.isTouchActive() &&
+ openFolder == null) {
+ mWorkspace.moveToDefaultScreen(true);
+ }
- closeFolder();
- exitSpringLoadedDragMode();
+ closeFolder();
+ exitSpringLoadedDragMode();
- // If we are already on home, then just animate back to the workspace, otherwise, just
- // wait until onResume to set the state back to Workspace
- if (alreadyOnHome) {
- showWorkspace(true);
+ // If we are already on home, then just animate back to the workspace,
+ // otherwise, just wait until onResume to set the state back to Workspace
+ if (alreadyOnHome) {
+ showWorkspace(true);
+ } else {
+ mOnResumeState = State.WORKSPACE;
+ }
+
+ final View v = getWindow().peekDecorView();
+ if (v != null && v.getWindowToken() != null) {
+ InputMethodManager imm = (InputMethodManager)getSystemService(
+ INPUT_METHOD_SERVICE);
+ imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
+ }
+
+ // Reset AllApps to its initial state
+ if (!alreadyOnHome && mAppsCustomizeTabHost != null) {
+ mAppsCustomizeTabHost.reset();
+ }
+ }
+ };
+
+ if (alreadyOnHome && !mWorkspace.hasWindowFocus()) {
+ // Delay processing of the intent to allow the status bar animation to finish
+ // first in order to avoid janky animations.
+ mWorkspace.postDelayed(processIntent, 350);
} else {
- mOnResumeState = State.WORKSPACE;
+ // Process the intent immediately.
+ processIntent.run();
}
- final View v = getWindow().peekDecorView();
- if (v != null && v.getWindowToken() != null) {
- InputMethodManager imm = (InputMethodManager)getSystemService(
- INPUT_METHOD_SERVICE);
- imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
- }
-
- // Reset AllApps to its initial state
- if (!alreadyOnHome && mAppsCustomizeTabHost != null) {
- mAppsCustomizeTabHost.reset();
- }
}
}
@@ -2682,6 +2697,7 @@
dispatchOnLauncherTransitionPrepare(fromView, animated, true);
dispatchOnLauncherTransitionPrepare(toView, animated, true);
+ mAppsCustomizeContent.pauseScrolling();
mStateAnimation.addListener(new AnimatorListenerAdapter() {
@Override
@@ -2696,6 +2712,8 @@
if (onCompleteRunnable != null) {
onCompleteRunnable.run();
}
+ mAppsCustomizeContent.updateCurrentPageScroll();
+ mAppsCustomizeContent.resumeScrolling();
}
});
@@ -2784,8 +2802,9 @@
mUserPresent = true;
updateRunning();
- // send an accessibility event to announce the context change
- getWindow().getDecorView().sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_SELECTED);
+ // Send an accessibility event to announce the context change
+ getWindow().getDecorView()
+ .sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
}
void showAllApps(boolean animated) {
@@ -2803,7 +2822,8 @@
closeFolder();
// Send an accessibility event to announce the context change
- getWindow().getDecorView().sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_SELECTED);
+ getWindow().getDecorView()
+ .sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
}
void enterSpringLoadedDragMode() {
@@ -3177,10 +3197,15 @@
@Override
public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
- boolean result = super.dispatchPopulateAccessibilityEvent(event);
+ final boolean result = super.dispatchPopulateAccessibilityEvent(event);
final List<CharSequence> text = event.getText();
text.clear();
- text.add(getString(R.string.home));
+ // Populate event with a fake title based on the current state.
+ if (mState == State.APPS_CUSTOMIZE) {
+ text.add(getString(R.string.all_apps_button_label));
+ } else {
+ text.add(getString(R.string.all_apps_home_button_label));
+ }
return result;
}
@@ -3482,7 +3507,9 @@
anim.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
- mWorkspace.postDelayed(mBuildLayersRunnable, 500);
+ if (mWorkspace != null) {
+ mWorkspace.postDelayed(mBuildLayersRunnable, 500);
+ }
}
});
anim.start();
diff --git a/src/com/android/launcher2/PagedView.java b/src/com/android/launcher2/PagedView.java
index 9b97384..2cb943d 100644
--- a/src/com/android/launcher2/PagedView.java
+++ b/src/com/android/launcher2/PagedView.java
@@ -59,6 +59,7 @@
private static final int MIN_LENGTH_FOR_FLING = 25;
protected static final int PAGE_SNAP_ANIMATION_DURATION = 550;
+ protected static final int MAX_PAGE_SNAP_DURATION = 750;
protected static final int SLOW_PAGE_SNAP_ANIMATION_DURATION = 950;
protected static final float NANOTIME_DIV = 1000000000.0f;
@@ -181,6 +182,7 @@
protected static final int sScrollIndicatorFadeInDuration = 150;
protected static final int sScrollIndicatorFadeOutDuration = 650;
protected static final int sScrollIndicatorFlashDuration = 650;
+ private boolean mScrollingPaused = false;
// If set, will defer loading associated pages until the scrolling settles
private boolean mDeferLoadAssociatedPagesUntilScrollCompletes;
@@ -304,6 +306,24 @@
}
/**
+ * Called during AllApps/Home transitions to avoid unnecessary work. When that other animation
+ * ends, {@link #resumeScrolling()} should be called, along with
+ * {@link #updateCurrentPageScroll()} to correctly set the final state and re-enable scrolling.
+ */
+ void pauseScrolling() {
+ mScroller.forceFinished(true);
+ cancelScrollingIndicatorAnimations();
+ mScrollingPaused = true;
+ }
+
+ /**
+ * Enables scrolling again.
+ * @see #pauseScrolling()
+ */
+ void resumeScrolling() {
+ mScrollingPaused = false;
+ }
+ /**
* Sets the current page.
*/
void setCurrentPage(int currentPage) {
@@ -1473,6 +1493,7 @@
// user flings, so we scale the duration by a value near to the derivative of the scroll
// interpolator at zero, ie. 5. We use 4 to make it a little slower.
duration = 4 * Math.round(1000 * Math.abs(distance / velocity));
+ duration = Math.min(duration, MAX_PAGE_SNAP_DURATION);
snapToPage(whichPage, delta, duration);
}
@@ -1743,7 +1764,7 @@
updateScrollingIndicatorPosition();
mScrollIndicator.setVisibility(View.VISIBLE);
cancelScrollingIndicatorAnimations();
- if (immediately) {
+ if (immediately || mScrollingPaused) {
mScrollIndicator.setAlpha(1f);
} else {
mScrollIndicatorAnimator = LauncherAnimUtils.ofFloat(mScrollIndicator, "alpha", 1f);
@@ -1768,7 +1789,7 @@
// Fade the indicator out
updateScrollingIndicatorPosition();
cancelScrollingIndicatorAnimations();
- if (immediately) {
+ if (immediately || mScrollingPaused) {
mScrollIndicator.setVisibility(View.INVISIBLE);
mScrollIndicator.setAlpha(0f);
} else {
diff --git a/src/com/android/launcher2/RocketLauncher.java b/src/com/android/launcher2/RocketLauncher.java
deleted file mode 100644
index 6eefedd..0000000
--- a/src/com/android/launcher2/RocketLauncher.java
+++ /dev/null
@@ -1,416 +0,0 @@
-/*);
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// TODO:
-// background stellar matter:
-// - add some slow horizontal parallax motion, or perhaps veeeeery gradual outward drift
-
-package com.android.launcher2;
-
-import android.animation.AnimatorSet;
-import android.animation.TimeAnimator;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.graphics.Bitmap;
-import android.graphics.Point;
-import android.graphics.Rect;
-import android.os.Handler;
-import android.support.v13.dreams.BasicDream;
-import android.util.AttributeSet;
-import android.util.DisplayMetrics;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.FrameLayout;
-import android.widget.ImageView;
-
-import com.android.launcher.R;
-
-import java.util.HashMap;
-import java.util.Random;
-
-public class RocketLauncher extends BasicDream {
- public static final boolean ROCKET_LAUNCHER = true;
-
- public static class Board extends FrameLayout
- {
- public static final boolean FIXED_STARS = true;
- public static final boolean FLYING_STARS = true;
- public static final int NUM_ICONS = 20;
-
- public static final float MANEUVERING_THRUST_SCALE = 0.1f; // tenth speed
- private boolean mManeuveringThrusters = false;
- private float mSpeedScale = 1.0f;
-
- public static final int LAUNCH_ZOOM_TIME = 400; // ms
-
- HashMap<ComponentName, Bitmap> mIcons;
- ComponentName[] mComponentNames;
-
- static Random sRNG = new Random();
-
- static float lerp(float a, float b, float f) {
- return (b-a)*f + a;
- }
-
- static float randfrange(float a, float b) {
- return lerp(a, b, sRNG.nextFloat());
- }
-
- static int randsign() {
- return sRNG.nextBoolean() ? 1 : -1;
- }
-
- static <E> E pick(E[] array) {
- if (array.length == 0) return null;
- return array[sRNG.nextInt(array.length)];
- }
-
- public class FlyingIcon extends ImageView {
- public static final float VMAX = 1000.0f;
- public static final float VMIN = 100.0f;
- public static final float ANGULAR_VMAX = 45f;
- public static final float ANGULAR_VMIN = 0f;
- public static final float SCALE_MIN = 0.5f;
- public static final float SCALE_MAX = 4f;
-
- public float v, vr;
-
- public final float[] hsv = new float[3];
-
- public float angle, anglex, angley;
- public float fuse;
- public float dist;
- public float endscale;
- public float boardCenterX, boardCenterY;
-
- public ComponentName component;
-
- public FlyingIcon(Context context, AttributeSet as) {
- super(context, as);
- setLayerType(View.LAYER_TYPE_HARDWARE, null);
-
- setBackgroundResource(R.drawable.flying_icon_bg);
- //android.util.Log.d("RocketLauncher", "ctor: " + this);
- hsv[1] = 1f;
- hsv[2] = 1f;
- }
-
- @Override
- public boolean onTouchEvent(MotionEvent event) {
- if (!mManeuveringThrusters || component == null) {
- return false;
- }
- if (getAlpha() < 0.5f) {
- setPressed(false);
- return false;
- }
-
- switch (event.getAction()) {
- case MotionEvent.ACTION_DOWN:
- setPressed(true);
- Board.this.resetWarpTimer();
- break;
- case MotionEvent.ACTION_MOVE:
- final Rect hit = new Rect();
- final Point offset = new Point();
- getGlobalVisibleRect(hit, offset);
- final int globx = (int) event.getX() + offset.x;
- final int globy = (int) event.getY() + offset.y;
- setPressed(hit.contains(globx, globy));
- Board.this.resetWarpTimer();
- break;
- case MotionEvent.ACTION_UP:
- if (isPressed()) {
- setPressed(false);
- postDelayed(new Runnable() {
- public void run() {
- try {
- getContext().startActivity(new Intent(Intent.ACTION_MAIN)
- .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
- .setComponent(component));
- } catch (android.content.ActivityNotFoundException e) {
- } catch (SecurityException e) {
- }
- }
- }, LAUNCH_ZOOM_TIME);
- endscale = 0;
- AnimatorSet s = LauncherAnimUtils.createAnimatorSet();
- s.playTogether(
- LauncherAnimUtils.ofFloat(this, "scaleX", 15f),
- LauncherAnimUtils.ofFloat(this, "scaleY", 15f),
- LauncherAnimUtils.ofFloat(this, "alpha", 0f)
- );
-
- // make sure things are still moving until the very last instant the
- // activity is visible
- s.setDuration((int)(LAUNCH_ZOOM_TIME * 1.25));
- s.setInterpolator(new android.view.animation.AccelerateInterpolator(3));
- s.start();
- }
- break;
- }
- return true;
- }
-
- public String toString() {
- return String.format("<'%s' @ (%.1f, %.1f) v=%.1f a=%.1f dist/fuse=%.1f/%.1f>",
- "icon", getX(), getY(), v, angle, dist, fuse);
- }
-
- public void randomizeIcon() {
- component = pick(mComponentNames);
- setImageBitmap(mIcons.get(component));
- }
-
- public void randomize() {
- v = randfrange(VMIN, VMAX);
- angle = randfrange(0, 360f);
- anglex = (float) Math.sin(angle / 180. * Math.PI);
- angley = (float) Math.cos(angle / 180. * Math.PI);
- vr = randfrange(ANGULAR_VMIN, ANGULAR_VMAX) * randsign();
- endscale = randfrange(SCALE_MIN, SCALE_MAX);
-
- randomizeIcon();
- }
- public void reset() {
- randomize();
- boardCenterX = (Board.this.getWidth() - getWidth()) / 2;
- boardCenterY = (Board.this.getHeight() - getHeight()) / 2;
- setX(boardCenterX);
- setY(boardCenterY);
- fuse = (float) Math.max(boardCenterX, boardCenterY);
- setRotation(180-angle);
- setScaleX(0f);
- setScaleY(0f);
- dist = 0;
- setAlpha(0f);
- }
- public void update(float dt) {
- dist += v * dt;
- setX(getX() + anglex * v * dt);
- setY(getY() + angley * v * dt);
- //setRotation(getRotation() + vr * dt);
- if (endscale > 0) {
- float scale = lerp(0, endscale, (float) Math.sqrt(dist / fuse));
- setScaleX(scale * lerp(1f, 0.75f, (float) Math.pow((v-VMIN)/(VMAX-VMIN),3)));
- setScaleY(scale * lerp(1f, 1.5f, (float) Math.pow((v-VMIN)/(VMAX-VMIN),3)));
- final float q1 = fuse*0.15f;
- final float q4 = fuse*0.75f;
- if (dist < q1) {
- setAlpha((float) Math.sqrt(dist/q1));
- } else if (dist > q4) {
- setAlpha((dist >= fuse) ? 0f : (1f-(float)Math.pow((dist-q4)/(fuse-q4),2)));
- } else {
- setAlpha(1f);
- }
- }
- }
- }
-
- public class FlyingStar extends FlyingIcon {
- public FlyingStar(Context context, AttributeSet as) {
- super(context, as);
- }
- public void randomizeIcon() {
- setImageResource(R.drawable.widget_resize_handle_bottom);
- }
- public void randomize() {
- super.randomize();
- v = randfrange(VMAX*0.75f, VMAX*2f); // fasticate
- endscale = randfrange(1f, 2f); // ensmallen
- }
- }
-
- TimeAnimator mAnim;
-
- public Board(Context context, AttributeSet as) {
- super(context, as);
-
- setBackgroundColor(0xFF000000);
-
- LauncherApplication app = (LauncherApplication)context.getApplicationContext();
- mIcons = app.getIconCache().getAllIcons();
- mComponentNames = new ComponentName[mIcons.size()];
- mComponentNames = mIcons.keySet().toArray(mComponentNames);
- }
-
- private void reset() {
- removeAllViews();
-
- final ViewGroup.LayoutParams wrap = new ViewGroup.LayoutParams(
- ViewGroup.LayoutParams.WRAP_CONTENT,
- ViewGroup.LayoutParams.WRAP_CONTENT);
-
- if (FIXED_STARS) {
- for(int i=0; i<20; i++) {
- ImageView fixedStar = new ImageView(getContext(), null);
- fixedStar.setImageResource(R.drawable.widget_resize_handle_bottom);
- final float s = randfrange(0.25f, 0.75f);
- fixedStar.setScaleX(s);
- fixedStar.setScaleY(s);
- fixedStar.setAlpha(0.75f);
- addView(fixedStar, wrap);
- fixedStar.setX(randfrange(0, getWidth()));
- fixedStar.setY(randfrange(0, getHeight()));
- }
- }
-
- for(int i=0; i<NUM_ICONS*2; i++) {
- FlyingIcon nv = (FLYING_STARS && (i < NUM_ICONS))
- ? new FlyingStar(getContext(), null)
- : new FlyingIcon(getContext(), null);
- addView(nv, wrap);
- nv.reset();
- }
-
- mAnim = new TimeAnimator();
- mAnim.setTimeListener(new TimeAnimator.TimeListener() {
- public void onTimeUpdate(TimeAnimator animation, long totalTime, long deltaTime) {
- // setRotation(totalTime * 0.01f); // not as cool as you would think
-
- final int START_ZOOM_TIME = 3000;
- if (totalTime < START_ZOOM_TIME) {
- final float x = totalTime/(float)START_ZOOM_TIME;
- final float s = 1f-(float)Math.pow(x-1, 4);
- setScaleX(s); setScaleY(s);
- } else {
- setScaleX(1.0f); setScaleY(1.0f);
- }
-
- if (mManeuveringThrusters) {
- if (mSpeedScale > MANEUVERING_THRUST_SCALE) {
- mSpeedScale -= (2*deltaTime/1000f);
- }
- if (mSpeedScale < MANEUVERING_THRUST_SCALE) {
- mSpeedScale = MANEUVERING_THRUST_SCALE;
- }
- } else {
- if (mSpeedScale < 1.0f) {
- mSpeedScale += (deltaTime/1000f);
- }
- if (mSpeedScale > 1.0f) {
- mSpeedScale = 1.0f;
- }
- }
-
- for (int i=0; i<getChildCount(); i++) {
- View v = getChildAt(i);
- if (!(v instanceof FlyingIcon)) continue;
- FlyingIcon nv = (FlyingIcon) v;
- nv.update(deltaTime / 1000f * mSpeedScale);
- final float scaledWidth = nv.getWidth() * nv.getScaleX();
- final float scaledHeight = nv.getHeight() * nv.getScaleY();
- if ( nv.getX() + scaledWidth < 0
- || nv.getX() - scaledWidth > getWidth()
- || nv.getY() + scaledHeight < 0
- || nv.getY() - scaledHeight > getHeight())
- {
- nv.reset();
- }
- }
- }
- });
- }
-
- @Override
- protected void onAttachedToWindow() {
- super.onAttachedToWindow();
- setLayerType(View.LAYER_TYPE_HARDWARE, null);
- setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
-
- reset();
- mAnim.start();
- }
-
- protected void onSizeChanged (int w, int h, int oldw, int oldh) {
- super.onSizeChanged(w,h,oldw,oldh);
- mAnim.cancel();
- reset();
- mAnim.start();
- }
-
-
- @Override
- protected void onDetachedFromWindow() {
- super.onDetachedFromWindow();
- mAnim.cancel();
- }
-
- @Override
- public boolean isOpaque() {
- return true;
- }
-
- @Override
- public boolean onInterceptTouchEvent(MotionEvent e) {
- // we want to eat touch events ourselves if we're in warp speed
- return (!(ROCKET_LAUNCHER && mManeuveringThrusters));
- }
-
- final Runnable mEngageWarp = new Runnable() {
- @Override
- public void run() {
- mManeuveringThrusters = false;
- }
- };
- public void resetWarpTimer() {
- final Handler h = getHandler();
- h.removeCallbacks(mEngageWarp);
- h.postDelayed(mEngageWarp, 5000);
- }
-
- @Override
- public boolean onTouchEvent(MotionEvent event) {
- if (!ROCKET_LAUNCHER) {
- return true;
- }
-
- if (event.getAction() == MotionEvent.ACTION_DOWN) {
- if (!mManeuveringThrusters) {
- mManeuveringThrusters = true;
- resetWarpTimer();
- return true;
- }
- }
-
- return false;
- }
- }
-
- @Override
- public void onStart() {
- super.onStart();
-
- DisplayMetrics metrics = new DisplayMetrics();
- getWindowManager().getDefaultDisplay().getMetrics(metrics);
- final int longside = metrics.widthPixels > metrics.heightPixels
- ? metrics.widthPixels : metrics.heightPixels;
-
- Board b = new Board(this, null);
- setContentView(b, new ViewGroup.LayoutParams(longside, longside));
- b.setX((metrics.widthPixels - longside) / 2);
- b.setY((metrics.heightPixels - longside) / 2);
- }
-
- @Override
- public void onUserInteraction() {
- if (!ROCKET_LAUNCHER) {
- finish();
- }
- }
-}