OSDN Git Service

Updating Tablet clings. (Bug 11973614)
authorWinson Chung <winsonc@google.com>
Wed, 15 Jan 2014 22:31:59 +0000 (14:31 -0800)
committerWinson Chung <winsonc@google.com>
Thu, 16 Jan 2014 22:26:07 +0000 (14:26 -0800)
Change-Id: I6cb10424a345691d50c4fac7969e0b97bbee4b3c

24 files changed:
res/layout-land/folder_cling.xml
res/layout-land/launcher.xml
res/layout-land/migration_workspace_cling.xml
res/layout-land/workspace_cling.xml
res/layout-port/folder_cling.xml
res/layout-port/migration_workspace_cling.xml
res/layout-port/workspace_cling.xml
res/layout-sw600dp-port/first_run_cling.xml [new file with mode: 0644]
res/layout-sw600dp-port/folder_cling.xml [deleted file]
res/layout-sw600dp-port/migration_workspace_cling.xml [new file with mode: 0644]
res/layout-sw600dp/first_run_cling.xml [new file with mode: 0644]
res/layout-sw600dp/folder_cling.xml [new file with mode: 0644]
res/layout-sw600dp/migration_cling.xml [new file with mode: 0644]
res/layout-sw600dp/workspace_cling.xml [new file with mode: 0644]
res/layout-sw720dp-port/folder_cling.xml [deleted file]
res/layout-sw720dp/first_run_cling.xml [new file with mode: 0644]
res/layout-sw720dp/launcher.xml
res/layout-sw720dp/migration_workspace_cling.xml [new file with mode: 0644]
res/values-sw600dp/styles.xml
res/values-sw720dp/styles.xml
src/com/android/launcher3/Cling.java
src/com/android/launcher3/DeviceProfile.java
src/com/android/launcher3/Launcher.java
src/com/android/launcher3/LauncherClings.java

index 86286d7..5dd3729 100644 (file)
@@ -16,7 +16,7 @@
 <com.android.launcher3.Cling
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3"
-    launcher:drawIdentifier="folder_portrait">
+    launcher:drawIdentifier="folder_landscape">
     <FrameLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
@@ -25,6 +25,7 @@
         android:layout_marginTop="10dp"
         android:layout_marginBottom="10dp">
         <LinearLayout
+            android:id="@+id/folder_bubble"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:orientation="vertical">
@@ -59,6 +60,6 @@
         android:id="@+id/cling_dismiss"
         android:layout_marginBottom="15dp"
         android:layout_marginEnd="20dp"
-        android:layout_gravity="bottom|end"
+        android:layout_gravity="bottom|right"
         android:onClick="dismissFolderCling" />
 </com.android.launcher3.Cling>
index 2880c18..7791609 100644 (file)
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:visibility="gone" />
+        <include layout="@layout/migration_cling"
+            android:id="@+id/migration_cling"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:visibility="gone" />
+        <include layout="@layout/migration_workspace_cling"
+            android:id="@+id/migration_workspace_cling"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:visibility="gone" />
         <include layout="@layout/workspace_cling"
             android:id="@+id/workspace_cling"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:visibility="gone" />
-
         <include layout="@layout/folder_cling"
             android:id="@+id/folder_cling"
             android:layout_width="match_parent"
index bf7075b..2d71940 100644 (file)
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     launcher:drawIdentifier="migration_workspace_landscape">
-    <FrameLayout
+    <LinearLayout
         android:id="@+id/content"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
+        android:layout_width="400dp"
+        android:layout_height="wrap_content"
+        android:layout_gravity="end|center_vertical"
+        android:paddingEnd="60dp"
+        android:orientation="vertical">
         <LinearLayout
             android:id="@+id/migration_workspace_cling_bubble"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:layout_gravity="bottom"
-            android:layout_marginStart="25dp"
-            android:layout_marginEnd="25dp"
-            android:orientation="vertical">
+            android:orientation="horizontal">
             <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginRight="4dp"
                 android:paddingLeft="20dp"
                 android:paddingRight="20dp"
                 android:paddingTop="20dp"
                 android:paddingBottom="20dp"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
                 android:orientation="vertical"
                 android:background="@drawable/cling">
                 <TextView
             <ImageView
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_gravity="center_horizontal"
-                android:src="@drawable/cling_arrow_down" />
+                android:layout_gravity="center_vertical"
+                android:src="@drawable/cling_arrow_end" />
         </LinearLayout>
-
         <Button
             style="@style/ClingButton"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_marginBottom="15dp"
-            android:layout_marginRight="20dp"
-            android:layout_gravity="bottom|right"
+            android:layout_marginTop="5dp"
+            android:layout_gravity="right"
             android:onClick="dismissMigrationWorkspaceCling" />
-    </FrameLayout>
+    </LinearLayout>
 </com.android.launcher3.Cling>
index db33db0..d3b07d7 100644 (file)
     xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    launcher:drawIdentifier="workspace_portrait">
+    launcher:drawIdentifier="workspace_landscape">
     <FrameLayout
         android:id="@+id/content"
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:layout_marginStart="25dp"
-        android:layout_marginEnd="25dp"
-        android:layout_marginTop="310dp">
+        android:layout_height="match_parent">
         <LinearLayout
+            android:id="@+id/workspace_cling_bubble"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_gravity="top"
+            android:layout_marginStart="25dp"
+            android:layout_marginEnd="25dp"
+            android:layout_marginTop="30dp"
             android:orientation="vertical">
-            <ImageView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_gravity="center_horizontal"
-                android:src="@drawable/cling_arrow_up" />
             <LinearLayout
                 android:paddingLeft="20dp"
                 android:paddingRight="20dp"
                     android:layout_height="wrap_content"
                     android:text="@string/workspace_cling_move_item" />
             </LinearLayout>
+            <ImageView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:src="@drawable/cling_arrow_down" />
+        </LinearLayout>
+
+        <LinearLayout
+            android:id="@+id/focused_hotseat_app_bubble"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="bottom|left"
+            android:layout_marginLeft="25dp"
+            android:layout_marginBottom="90dp"
+            android:orientation="vertical"
+            android:visibility="gone">
+            <LinearLayout
+                android:paddingLeft="20dp"
+                android:paddingRight="20dp"
+                android:paddingTop="20dp"
+                android:paddingBottom="20dp"
+                android:layout_width="240dp"
+                android:layout_height="wrap_content"
+                android:orientation="vertical"
+                android:background="@drawable/cling">
+                <TextView
+                    android:id="@+id/focused_hotseat_app_title"
+                    style="@style/ClingTitleText"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content" />
+                <TextView
+                    android:id="@+id/focused_hotseat_app_description"
+                    style="@style/ClingText"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content" />
+            </LinearLayout>
+            <ImageView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="left"
+                android:layout_marginLeft="78dp"
+                android:src="@drawable/cling_arrow_down" />
         </LinearLayout>
     </FrameLayout>
+
     <Button
         style="@style/ClingButton"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginBottom="15dp"
-        android:layout_marginEnd="20dp"
-        android:layout_gravity="bottom|end"
+        android:layout_marginRight="20dp"
+        android:layout_gravity="bottom|right"
         android:onClick="dismissWorkspaceCling" />
 </com.android.launcher3.Cling>
index 86286d7..1a1b11f 100644 (file)
@@ -25,6 +25,7 @@
         android:layout_marginTop="10dp"
         android:layout_marginBottom="10dp">
         <LinearLayout
+            android:id="@+id/folder_bubble"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:orientation="vertical">
@@ -59,6 +60,6 @@
         android:id="@+id/cling_dismiss"
         android:layout_marginBottom="15dp"
         android:layout_marginEnd="20dp"
-        android:layout_gravity="bottom|end"
+        android:layout_gravity="bottom|right"
         android:onClick="dismissFolderCling" />
 </com.android.launcher3.Cling>
index bc5e22f..576bb41 100644 (file)
@@ -63,7 +63,7 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginBottom="15dp"
-            android:layout_marginRight="20dp"
+            android:layout_marginEnd="20dp"
             android:layout_gravity="bottom|right"
             android:onClick="dismissMigrationWorkspaceCling" />
     </FrameLayout>
index b926ca9..6245686 100644 (file)
@@ -24,6 +24,7 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent">
         <LinearLayout
+            android:id="@+id/workspace_cling_bubble"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_gravity="top"
diff --git a/res/layout-sw600dp-port/first_run_cling.xml b/res/layout-sw600dp-port/first_run_cling.xml
new file mode 100644 (file)
index 0000000..d80c084
--- /dev/null
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<com.android.launcher3.Cling
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    launcher:drawIdentifier="first_run_portrait">
+    <FrameLayout 
+        android:id="@+id/content"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+        <LinearLayout
+            android:id="@+id/bubble_content"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:layout_marginLeft="100dp"
+            android:layout_marginRight="100dp"
+            android:orientation="vertical">
+            <TextView
+                style="@style/ClingAltTitleText"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:layout_marginBottom="10dp"
+                android:text="@string/first_run_cling_title"
+                android:textColor="#FFFFFFFF"
+                android:gravity="center" />
+            <TextView
+                style="@style/ClingAltText"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:text="@string/first_run_cling_description"
+                android:textColor="#80000000"
+                android:gravity="center" />
+        </LinearLayout>
+        <TextView
+            style="@style/ClingHintText"
+            android:id="@+id/search_bar_hint"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="top|end"
+            android:layout_marginEnd="30dp"
+            android:layout_marginTop="80dp"
+            android:gravity="center_horizontal"
+            android:maxWidth="160dp"
+            android:visibility="gone"
+            android:drawableTop="@drawable/cling_arrow_up"
+            android:drawablePadding="10dp"
+            android:text="@string/first_run_cling_search_bar_hint" />
+        <TextView
+            style="@style/ClingHintText"
+            android:id="@+id/custom_content_hint"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="top|start"
+            android:layout_marginStart="30dp"
+            android:layout_marginTop="120dp"
+            android:gravity="start"
+            android:maxWidth="160dp"
+            android:visibility="gone"
+            android:drawableStart="@drawable/cling_arrow_start"
+            android:drawablePadding="10dp"
+            android:text="@string/first_run_cling_custom_content_hint" />
+        <TextView
+            style="@style/ClingHintText"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="bottom|end"
+            android:layout_marginEnd="30dp"
+            android:layout_marginBottom="120dp"
+            android:maxWidth="180dp"
+            android:drawableEnd="@drawable/cling_arrow_end"
+            android:drawablePadding="10dp"
+            android:text="@string/first_run_cling_create_screens_hint" />
+    </FrameLayout>
+    <Button
+        style="@style/ClingButton"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="30dp"
+        android:layout_marginEnd="30dp"
+        android:layout_gravity="bottom|end"
+        android:onClick="dismissFirstRunCling" />
+</com.android.launcher3.Cling>
diff --git a/res/layout-sw600dp-port/folder_cling.xml b/res/layout-sw600dp-port/folder_cling.xml
deleted file mode 100644 (file)
index 87086cb..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-<com.android.launcher3.Cling
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3"
-    launcher:drawIdentifier="folder_portrait">
-    <FrameLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:layout_marginStart="20dp"
-        android:layout_marginEnd="10dp"
-        android:layout_marginTop="@dimen/folderClingMarginTop">
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="vertical">
-            <TextView
-                style="@style/ClingTitleText"
-                android:id="@+id/folder_cling_title"
-                android:text="@string/folder_cling_title" />
-            <TextView
-                style="@style/ClingText"
-                android:id="@+id/folder_cling_create_folder"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:text="@string/folder_cling_create_folder" />
-        </LinearLayout>
-    </FrameLayout>
-    <Button
-        style="@style/ClingButton"
-        android:id="@+id/cling_dismiss"
-        android:minWidth="168dp"
-        android:textSize="24sp"
-        android:layout_marginBottom="27dp"
-        android:layout_marginEnd="36dp"
-        android:layout_gravity="bottom|end"
-        android:onClick="dismissFolderCling" />
-</com.android.launcher3.Cling>
diff --git a/res/layout-sw600dp-port/migration_workspace_cling.xml b/res/layout-sw600dp-port/migration_workspace_cling.xml
new file mode 100644 (file)
index 0000000..eb13137
--- /dev/null
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<com.android.launcher3.Cling
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    launcher:drawIdentifier="migration_workspace_large_portrait">
+    <FrameLayout
+        android:id="@+id/content"
+        android:layout_width="480dp"
+        android:layout_height="match_parent"
+        android:layout_gravity="bottom|center_horizontal">
+        <LinearLayout
+            android:id="@+id/migration_workspace_cling_bubble"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_gravity="bottom"
+            android:layout_marginStart="25dp"
+            android:layout_marginEnd="25dp"
+            android:orientation="vertical">
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginRight="4dp"
+                android:paddingLeft="20dp"
+                android:paddingRight="20dp"
+                android:paddingTop="20dp"
+                android:paddingBottom="20dp"
+                android:orientation="vertical"
+                android:background="@drawable/cling">
+                <TextView
+                    style="@style/ClingTitleText"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/workspace_cling_title" />
+                <TextView
+                    style="@style/ClingText"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:text="@string/workspace_cling_move_item" />
+            </LinearLayout>
+            <ImageView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:src="@drawable/cling_arrow_down" />
+            <Button
+                style="@style/ClingButton"
+                android:id="@+id/dismiss_migration_workspace_cling_button"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="right"
+                android:onClick="dismissMigrationWorkspaceCling" />
+        </LinearLayout>
+    </FrameLayout>
+</com.android.launcher3.Cling>
diff --git a/res/layout-sw600dp/first_run_cling.xml b/res/layout-sw600dp/first_run_cling.xml
new file mode 100644 (file)
index 0000000..295765b
--- /dev/null
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<com.android.launcher3.Cling
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    launcher:drawIdentifier="first_run_landscape">
+    <FrameLayout 
+        android:id="@+id/content"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+        <LinearLayout
+            android:id="@+id/bubble_content"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:layout_marginLeft="100dp"
+            android:layout_marginRight="100dp"
+            android:orientation="vertical">
+            <TextView
+                style="@style/ClingAltTitleText"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:layout_marginBottom="10dp"
+                android:text="@string/first_run_cling_title"
+                android:textColor="#FFFFFFFF"
+                android:gravity="center" />
+            <TextView
+                style="@style/ClingAltText"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:text="@string/first_run_cling_description"
+                android:textColor="#80000000"
+                android:gravity="center" />
+        </LinearLayout>
+        <TextView
+            style="@style/ClingHintText"
+            android:id="@+id/search_bar_hint"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="top|start"
+            android:layout_marginStart="60dp"
+            android:layout_marginTop="105dp"
+            android:gravity="start"
+            android:maxWidth="160dp"
+            android:visibility="gone"
+            android:drawableStart="@drawable/cling_arrow_start"
+            android:drawablePadding="10dp"
+            android:text="@string/first_run_cling_search_bar_hint" />
+        <TextView
+            style="@style/ClingHintText"
+            android:id="@+id/custom_content_hint"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="top|start"
+            android:layout_marginStart="60dp"
+            android:layout_marginTop="200dp"
+            android:gravity="start"
+            android:maxWidth="160dp"
+            android:visibility="gone"
+            android:drawableStart="@drawable/cling_arrow_start"
+            android:drawablePadding="10dp"
+            android:text="@string/first_run_cling_custom_content_hint" />
+        <TextView
+            style="@style/ClingHintText"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="bottom|end"
+            android:layout_marginEnd="30dp"
+            android:layout_marginBottom="120dp"
+            android:maxWidth="180dp"
+            android:drawableEnd="@drawable/cling_arrow_end"
+            android:drawablePadding="10dp"
+            android:text="@string/first_run_cling_create_screens_hint" />
+    </FrameLayout>
+    <Button
+        style="@style/ClingButton"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="30dp"
+        android:layout_marginEnd="30dp"
+        android:layout_gravity="bottom|end"
+        android:onClick="dismissFirstRunCling" />
+</com.android.launcher3.Cling>
diff --git a/res/layout-sw600dp/folder_cling.xml b/res/layout-sw600dp/folder_cling.xml
new file mode 100644 (file)
index 0000000..f21aef4
--- /dev/null
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<com.android.launcher3.Cling
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3"
+    launcher:drawIdentifier="folder_large">
+    <LinearLayout
+        android:id="@+id/folder_bubble"
+        android:layout_width="300dp"
+        android:layout_height="match_parent"
+        android:layout_gravity="left|top"
+        android:paddingTop="28dp"
+        android:paddingRight="10dp"
+        android:orientation="vertical">
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal">
+            <ImageView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_vertical"
+                android:src="@drawable/cling_arrow_start" />
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginRight="4dp"
+                android:paddingLeft="20dp"
+                android:paddingRight="20dp"
+                android:paddingTop="20dp"
+                android:paddingBottom="20dp"
+                android:orientation="vertical"
+                android:background="@drawable/cling">
+                <TextView
+                    style="@style/ClingTitleText"
+                    android:id="@+id/folder_cling_title"
+                    android:text="@string/folder_cling_title" />
+                <TextView
+                    style="@style/ClingText"
+                    android:id="@+id/folder_cling_create_folder"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:text="@string/folder_cling_create_folder" />
+            </LinearLayout>
+        </LinearLayout>
+        <Button
+            style="@style/ClingButton"
+            android:id="@+id/cling_dismiss"
+            android:layout_marginTop="5dp"
+            android:layout_gravity="right"
+            android:onClick="dismissFolderCling" />
+    </LinearLayout>
+</com.android.launcher3.Cling>
diff --git a/res/layout-sw600dp/migration_cling.xml b/res/layout-sw600dp/migration_cling.xml
new file mode 100644 (file)
index 0000000..19def6a
--- /dev/null
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<com.android.launcher3.Cling
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    launcher:drawIdentifier="migration_portrait">
+    <LinearLayout
+        android:id="@+id/content"
+        android:layout_width="360dp"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:orientation="vertical">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_gravity="top"
+            android:layout_marginBottom="15dp"
+            android:orientation="vertical">
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:gravity="center"
+                android:text="@string/first_run_cling_title"
+                android:textSize="42dp"
+                android:textColor="#FFffffff" />
+            <ImageView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="10dp"
+                android:layout_marginBottom="0dp"
+                android:layout_gravity="center_horizontal"
+                android:src="@drawable/on_boarding_welcome" />
+
+            <ImageView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:src="@drawable/cling_arrow_up" />
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="4dp"
+                android:layout_marginRight="4dp"
+                android:paddingLeft="25dp"
+                android:paddingRight="25dp"
+                android:paddingTop="20dp"
+                android:paddingBottom="20dp"
+                android:orientation="vertical"
+                android:background="@drawable/cling">
+                <TextView
+                    style="@style/ClingTitleText"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/migration_cling_title" />
+                <TextView
+                    style="@style/ClingText"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:text="@string/migration_cling_description" />
+            </LinearLayout>
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_gravity="bottom"
+            android:orientation="vertical">
+            <Button
+                style="@style/ClingButton"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:text="@string/migration_cling_copy_apps"
+                android:onClick="dismissMigrationClingCopyApps" />
+            <Button
+                style="@style/ClingButton"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:text="@string/migration_cling_use_default"
+                android:onClick="dismissMigrationClingUseDefault" />
+        </LinearLayout>
+    </LinearLayout>
+</com.android.launcher3.Cling>
diff --git a/res/layout-sw600dp/workspace_cling.xml b/res/layout-sw600dp/workspace_cling.xml
new file mode 100644 (file)
index 0000000..63b5522
--- /dev/null
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<com.android.launcher3.Cling
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    launcher:drawIdentifier="workspace_large">
+    <FrameLayout
+        android:id="@+id/content"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+        <LinearLayout
+            android:id="@+id/workspace_cling_bubble"
+            android:layout_width="400dp"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_horizontal|bottom"
+            android:orientation="vertical">
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:paddingLeft="20dp"
+                android:paddingRight="20dp"
+                android:paddingTop="20dp"
+                android:paddingBottom="20dp"
+                android:orientation="vertical"
+                android:background="@drawable/cling">
+                <TextView
+                    style="@style/ClingTitleText"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/workspace_cling_title" />
+                <TextView
+                    style="@style/ClingText"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:text="@string/workspace_cling_move_item" />
+            </LinearLayout>
+            <ImageView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:src="@drawable/cling_arrow_down" />
+            <Button
+                style="@style/ClingButton"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="right"
+                android:onClick="dismissWorkspaceCling" />
+        </LinearLayout>
+    </FrameLayout>
+</com.android.launcher3.Cling>
diff --git a/res/layout-sw720dp-port/folder_cling.xml b/res/layout-sw720dp-port/folder_cling.xml
deleted file mode 100644 (file)
index 40d4e20..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-<com.android.launcher3.Cling
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3"
-    launcher:drawIdentifier="folder_large">
-    <FrameLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:layout_marginStart="@dimen/cling_text_block_offset_x"
-        android:layout_marginTop="@dimen/cling_text_block_offset_y">
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="vertical">
-            <TextView
-                style="@style/ClingTitleText"
-                android:id="@+id/folder_cling_title"
-                android:text="@string/folder_cling_title" />
-            <TextView
-                style="@style/ClingText"
-                android:id="@+id/folder_cling_create_folder"
-                android:layout_width="480dp"
-                android:layout_height="wrap_content"
-                android:text="@string/folder_cling_create_folder" />
-            <Button
-                style="@style/ClingButton"
-                android:id="@+id/cling_dismiss"
-                android:layout_marginTop="15dp"
-                android:onClick="dismissFolderCling" />
-        </LinearLayout>
-    </FrameLayout>
-</com.android.launcher3.Cling>
diff --git a/res/layout-sw720dp/first_run_cling.xml b/res/layout-sw720dp/first_run_cling.xml
new file mode 100644 (file)
index 0000000..c43d8d3
--- /dev/null
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<com.android.launcher3.Cling
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    launcher:drawIdentifier="first_run_portrait">
+    <FrameLayout 
+        android:id="@+id/content"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+        <LinearLayout
+            android:id="@+id/bubble_content"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:layout_marginLeft="100dp"
+            android:layout_marginRight="100dp"
+            android:orientation="vertical">
+            <TextView
+                style="@style/ClingAltTitleText"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:layout_marginBottom="10dp"
+                android:text="@string/first_run_cling_title"
+                android:textColor="#FFFFFFFF"
+                android:gravity="center" />
+            <TextView
+                style="@style/ClingAltText"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:text="@string/first_run_cling_description"
+                android:textColor="#80000000"
+                android:gravity="center" />
+        </LinearLayout>
+        <TextView
+            style="@style/ClingHintText"
+            android:id="@+id/search_bar_hint"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="top|end"
+            android:layout_marginEnd="120dp"
+            android:layout_marginTop="80dp"
+            android:gravity="center_horizontal"
+            android:maxWidth="160dp"
+            android:visibility="gone"
+            android:drawableTop="@drawable/cling_arrow_up"
+            android:drawablePadding="10dp"
+            android:text="@string/first_run_cling_search_bar_hint" />
+        <TextView
+            style="@style/ClingHintText"
+            android:id="@+id/custom_content_hint"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical|start"
+            android:layout_marginStart="30dp"
+            android:gravity="start"
+            android:maxWidth="160dp"
+            android:visibility="gone"
+            android:drawableStart="@drawable/cling_arrow_start"
+            android:drawablePadding="10dp"
+            android:text="@string/first_run_cling_custom_content_hint" />
+        <TextView
+            style="@style/ClingHintText"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical|end"
+            android:layout_marginEnd="30dp"
+            android:maxWidth="180dp"
+            android:drawableEnd="@drawable/cling_arrow_end"
+            android:drawablePadding="10dp"
+            android:text="@string/first_run_cling_create_screens_hint" />
+    </FrameLayout>
+    <Button
+        style="@style/ClingButton"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="30dp"
+        android:layout_marginEnd="40dp"
+        android:layout_gravity="bottom|end"
+        android:onClick="dismissFirstRunCling" />
+</com.android.launcher3.Cling>
index 64b0fa0..685d03c 100644 (file)
         <!-- The Workspace cling must appear under the AppsCustomizePagedView below to ensure
              that it is still visible during the transition to AllApps and doesn't overlay on
              top of that view. -->
+        <com.android.launcher3.ScrimView
+            android:id="@+id/cling_scrim"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:visibility="gone" />
         <include layout="@layout/first_run_cling"
             android:id="@+id/first_run_cling"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:visibility="gone" />
+        <include layout="@layout/migration_cling"
+            android:id="@+id/migration_cling"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:visibility="gone" />
+        <include layout="@layout/migration_workspace_cling"
+            android:id="@+id/migration_workspace_cling"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:visibility="gone" />
         <include layout="@layout/workspace_cling"
             android:id="@+id/workspace_cling"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:visibility="gone" />
-
         <include layout="@layout/folder_cling"
             android:id="@+id/folder_cling"
             android:layout_width="match_parent"
diff --git a/res/layout-sw720dp/migration_workspace_cling.xml b/res/layout-sw720dp/migration_workspace_cling.xml
new file mode 100644 (file)
index 0000000..eb13137
--- /dev/null
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<com.android.launcher3.Cling
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    launcher:drawIdentifier="migration_workspace_large_portrait">
+    <FrameLayout
+        android:id="@+id/content"
+        android:layout_width="480dp"
+        android:layout_height="match_parent"
+        android:layout_gravity="bottom|center_horizontal">
+        <LinearLayout
+            android:id="@+id/migration_workspace_cling_bubble"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_gravity="bottom"
+            android:layout_marginStart="25dp"
+            android:layout_marginEnd="25dp"
+            android:orientation="vertical">
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginRight="4dp"
+                android:paddingLeft="20dp"
+                android:paddingRight="20dp"
+                android:paddingTop="20dp"
+                android:paddingBottom="20dp"
+                android:orientation="vertical"
+                android:background="@drawable/cling">
+                <TextView
+                    style="@style/ClingTitleText"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/workspace_cling_title" />
+                <TextView
+                    style="@style/ClingText"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:text="@string/workspace_cling_move_item" />
+            </LinearLayout>
+            <ImageView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:src="@drawable/cling_arrow_down" />
+            <Button
+                style="@style/ClingButton"
+                android:id="@+id/dismiss_migration_workspace_cling_button"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="right"
+                android:onClick="dismissMigrationWorkspaceCling" />
+        </LinearLayout>
+    </FrameLayout>
+</com.android.launcher3.Cling>
index 200c0a0..bcbbafd 100644 (file)
 -->
 
 <resources>
-    <style name="ClingButton">
-        <item name="android:layout_width">wrap_content</item>
-        <item name="android:layout_height">wrap_content</item>
-        <item name="android:paddingTop">10dp</item>
-        <item name="android:paddingBottom">15dp</item>
-        <item name="android:paddingLeft">35dp</item>
-        <item name="android:paddingRight">35dp</item>
-        <item name="android:text">@string/cling_dismiss</item>
-        <item name="android:textStyle">bold</item>
-        <item name="android:background">@drawable/cling_button_bg</item>
-    </style>
-    <style name="ClingTitleText">
-        <item name="android:layout_width">wrap_content</item>
-        <item name="android:layout_height">wrap_content</item>
-        <item name="android:layout_marginBottom">5dp</item>
-        <item name="android:textSize">30sp</item>
-        <item name="android:textColor">#33B5E5</item>
-        <item name="android:shadowColor">#000000</item>
-        <item name="android:shadowDy">2</item>
-        <item name="android:shadowRadius">2.0</item>
-    </style>
-    <style name="ClingText">
-        <item name="android:textSize">22sp</item>
-        <item name="android:textColor">#FFFFFF</item>
-        <item name="android:shadowColor">#000000</item>
-        <item name="android:shadowDy">2</item>
-        <item name="android:shadowRadius">2.0</item>
-        <item name="android:lineSpacingMultiplier">1.1</item>
-    </style>
 </resources>
index 507af1d..71f0304 100644 (file)
 -->
 
 <resources>
-<!-- Clings -->
-    <style name="ClingButton">
-        <item name="android:layout_width">wrap_content</item>
-        <item name="android:layout_height">wrap_content</item>
-        <item name="android:paddingTop">10dp</item>
-        <item name="android:paddingBottom">15dp</item>
-        <item name="android:paddingLeft">35dp</item>
-        <item name="android:paddingRight">35dp</item>
-        <item name="android:text">@string/cling_dismiss</item>
-        <item name="android:textSize">20sp</item>
-        <item name="android:textStyle">bold</item>
-        <item name="android:background">@drawable/cling_button_bg</item>
-    </style>
-    <style name="ClingTitleText">
-        <item name="android:layout_width">wrap_content</item>
-        <item name="android:layout_height">wrap_content</item>
-        <item name="android:layout_marginBottom">5dp</item>
-        <item name="android:textSize">32sp</item>
-        <item name="android:textColor">#49C0EC</item>
-        <item name="android:shadowColor">#000000</item>
-        <item name="android:shadowDy">2</item>
-        <item name="android:shadowRadius">2.0</item>
-    </style>
-    <style name="ClingText">
-        <item name="android:textSize">22sp</item>
-        <item name="android:textColor">#FFFFFF</item>
-        <item name="android:shadowColor">#000000</item>
-        <item name="android:shadowDy">2</item>
-        <item name="android:shadowRadius">2.0</item>
-        <item name="android:lineSpacingMultiplier">1.1</item>
-    </style>
-
 <!-- Workspace -->
     <style name="TabIndicator.AppsCustomize">
         <item name="android:paddingLeft">32dp</item>
index 185b49b..a6139cc 100644 (file)
@@ -30,6 +30,7 @@ import android.util.DisplayMetrics;
 import android.view.FocusFinder;
 import android.view.MotionEvent;
 import android.view.View;
+import android.view.ViewGroup;
 import android.view.animation.AccelerateInterpolator;
 import android.widget.FrameLayout;
 import android.widget.TextView;
@@ -49,6 +50,7 @@ public class Cling extends FrameLayout implements Insettable, View.OnClickListen
     private static String MIGRATION_LANDSCAPE = "migration_landscape";
 
     private static String MIGRATION_WORKSPACE_PORTRAIT = "migration_workspace_portrait";
+    private static String MIGRATION_WORKSPACE_LARGE_PORTRAIT = "migration_workspace_large_portrait";
     private static String MIGRATION_WORKSPACE_LANDSCAPE = "migration_workspace_landscape";
 
     private static String FOLDER_PORTRAIT = "folder_portrait";
@@ -56,6 +58,7 @@ public class Cling extends FrameLayout implements Insettable, View.OnClickListen
     private static String FOLDER_LARGE = "folder_large";
 
     private static float FIRST_RUN_CIRCLE_BUFFER_DPS = 60;
+    private static float FIRST_RUN_MAX_CIRCLE_RADIUS_DPS = 180;
     private static float WORKSPACE_INNER_CIRCLE_RADIUS_DPS = 50;
     private static float WORKSPACE_OUTER_CIRCLE_RADIUS_DPS = 60;
     private static float WORKSPACE_CIRCLE_Y_OFFSET_DPS = 30;
@@ -106,7 +109,7 @@ public class Cling extends FrameLayout implements Insettable, View.OnClickListen
         if (!mIsInitialized) {
             mLauncher = l;
             mScrimView = scrim;
-            mBackgroundColor = 0xdd000000;
+            mBackgroundColor = 0xcc000000;
             setOnLongClickListener(this);
             setOnClickListener(this);
             setOnTouchListener(this);
@@ -141,7 +144,9 @@ public class Cling extends FrameLayout implements Insettable, View.OnClickListen
         Resources r = getResources();
         int appIconId = drawableId;
         Hotseat hotseat = mLauncher.getHotseat();
-        if (hotseat != null && appIconId > -1 && appRank > -1 && !title.isEmpty() &&
+        // Skip the focused app in the large layouts
+        if (!mDrawIdentifier.equals(WORKSPACE_LARGE) &&
+                hotseat != null && appIconId > -1 && appRank > -1 && !title.isEmpty() &&
                 !description.isEmpty()) {
             // Set the app bounds
             int x = hotseat.getCellXFromOrder(appRank);
@@ -175,6 +180,18 @@ public class Cling extends FrameLayout implements Insettable, View.OnClickListen
         }
     }
 
+    void setOpenFolderRect(Rect r) {
+        if (mDrawIdentifier.equals(FOLDER_LANDSCAPE) ||
+            mDrawIdentifier.equals(FOLDER_LARGE)) {
+            ViewGroup vg = (ViewGroup) findViewById(R.id.folder_bubble);
+            ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) vg.getLayoutParams();
+            lp.topMargin = r.top - mInsets.bottom;
+            lp.leftMargin = r.right;
+            vg.setLayoutDirection(View.LAYOUT_DIRECTION_LTR);
+            vg.requestLayout();
+        }
+    }
+
     void updateMigrationWorkspaceBubblePosition() {
         DisplayMetrics metrics = new DisplayMetrics();
         mLauncher.getWindowManager().getDefaultDisplay().getMetrics(metrics);
@@ -184,10 +201,59 @@ public class Cling extends FrameLayout implements Insettable, View.OnClickListen
         DeviceProfile grid = app.getDynamicGrid().getDeviceProfile();
         Rect pageIndicatorBounds = grid.getWorkspacePageIndicatorBounds(mInsets);
 
-        View bubble = findViewById(R.id.migration_workspace_cling_bubble);
-        FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) bubble.getLayoutParams();
-        lp.bottomMargin = grid.heightPx - pageIndicatorBounds.top;
-        bubble.requestLayout();
+        if (mDrawIdentifier.equals(MIGRATION_WORKSPACE_PORTRAIT)) {
+            View bubble = findViewById(R.id.migration_workspace_cling_bubble);
+            ViewGroup.MarginLayoutParams lp =
+                    (ViewGroup.MarginLayoutParams) bubble.getLayoutParams();
+            lp.bottomMargin = grid.heightPx - pageIndicatorBounds.top;
+            bubble.requestLayout();
+        } else if (mDrawIdentifier.equals(MIGRATION_WORKSPACE_LARGE_PORTRAIT)) {
+            View bubble = findViewById(R.id.content);
+            ViewGroup.MarginLayoutParams lp =
+                    (ViewGroup.MarginLayoutParams) bubble.getLayoutParams();
+            lp.bottomMargin = grid.heightPx - pageIndicatorBounds.top;
+            bubble.requestLayout();
+        } else if (mDrawIdentifier.equals(MIGRATION_WORKSPACE_LANDSCAPE)) {
+            View bubble = findViewById(R.id.content);
+            ViewGroup.MarginLayoutParams lp =
+                    (ViewGroup.MarginLayoutParams) bubble.getLayoutParams();
+            if (grid.isLayoutRtl) {
+                lp.leftMargin = pageIndicatorBounds.right;
+            } else {
+                lp.rightMargin = (grid.widthPx - pageIndicatorBounds.left);
+            }
+            bubble.requestLayout();
+        }
+    }
+
+    void updateWorkspaceBubblePosition() {
+        DisplayMetrics metrics = new DisplayMetrics();
+        mLauncher.getWindowManager().getDefaultDisplay().getMetrics(metrics);
+
+        // Get the cut-out bounds
+        LauncherAppState app = LauncherAppState.getInstance();
+        DeviceProfile grid = app.getDynamicGrid().getDeviceProfile();
+        Rect cutOutBounds = getWorkspaceCutOutBounds(metrics);
+
+        if (mDrawIdentifier.equals(WORKSPACE_LARGE)) {
+            View bubble = findViewById(R.id.workspace_cling_bubble);
+            ViewGroup.MarginLayoutParams lp =
+                    (ViewGroup.MarginLayoutParams) bubble.getLayoutParams();
+            lp.bottomMargin = grid.heightPx - cutOutBounds.top - mInsets.bottom;
+            bubble.requestLayout();
+        }
+    }
+
+    private Rect getWorkspaceCutOutBounds(DisplayMetrics metrics) {
+        int halfWidth = metrics.widthPixels / 2;
+        int halfHeight = metrics.heightPixels / 2;
+        int yOffset = DynamicGrid.pxFromDp(WORKSPACE_CIRCLE_Y_OFFSET_DPS, metrics);
+        if (mDrawIdentifier.equals(WORKSPACE_LARGE)) {
+            yOffset = 0;
+        }
+        int radius = DynamicGrid.pxFromDp(WORKSPACE_OUTER_CIRCLE_RADIUS_DPS, metrics);
+        return new Rect(halfWidth - radius, halfHeight - yOffset - radius, halfWidth + radius,
+                halfHeight - yOffset + radius);
     }
 
     void show(boolean animate, int duration) {
@@ -198,6 +264,7 @@ public class Cling extends FrameLayout implements Insettable, View.OnClickListen
                 mDrawIdentifier.equals(WORKSPACE_LARGE) ||
                 mDrawIdentifier.equals(WORKSPACE_CUSTOM) ||
                 mDrawIdentifier.equals(MIGRATION_WORKSPACE_PORTRAIT) ||
+                mDrawIdentifier.equals(MIGRATION_WORKSPACE_LARGE_PORTRAIT) ||
                 mDrawIdentifier.equals(MIGRATION_WORKSPACE_LANDSCAPE)) {
             View content = getContent();
             content.setAlpha(0f);
@@ -381,6 +448,7 @@ public class Cling extends FrameLayout implements Insettable, View.OnClickListen
             mLauncher.getLauncherClings().dismissWorkspaceCling(null);
             return true;
         } else if (mDrawIdentifier.equals(MIGRATION_WORKSPACE_PORTRAIT) ||
+                mDrawIdentifier.equals(MIGRATION_WORKSPACE_LARGE_PORTRAIT) ||
                 mDrawIdentifier.equals(MIGRATION_WORKSPACE_LANDSCAPE)) {
             mLauncher.getLauncherClings().dismissMigrationWorkspaceCling(null);
             return true;
@@ -417,6 +485,7 @@ public class Cling extends FrameLayout implements Insettable, View.OnClickListen
                     mDrawIdentifier.equals(WORKSPACE_LANDSCAPE) ||
                     mDrawIdentifier.equals(WORKSPACE_LARGE) ||
                     mDrawIdentifier.equals(MIGRATION_WORKSPACE_PORTRAIT) ||
+                    mDrawIdentifier.equals(MIGRATION_WORKSPACE_LARGE_PORTRAIT) ||
                     mDrawIdentifier.equals(MIGRATION_WORKSPACE_LANDSCAPE)) {
                 // Initialize the draw buffer (to allow punching through)
                 eraseBg = Bitmap.createBitmap(getMeasuredWidth(), getMeasuredHeight(),
@@ -443,24 +512,23 @@ public class Cling extends FrameLayout implements Insettable, View.OnClickListen
                 bubbleContent.getGlobalVisibleRect(bubbleRect);
                 mBubblePaint.setAlpha((int) (255 * alpha));
                 float buffer = DynamicGrid.pxFromDp(FIRST_RUN_CIRCLE_BUFFER_DPS, metrics);
+                float maxRadius = DynamicGrid.pxFromDp(FIRST_RUN_MAX_CIRCLE_RADIUS_DPS, metrics);
+                float radius = Math.min(maxRadius, (bubbleContent.getMeasuredWidth() + buffer) / 2);
                 canvas.drawCircle(metrics.widthPixels / 2,
-                        bubbleRect.centerY(),
-                        (bubbleContent.getMeasuredWidth() + buffer) / 2,
+                        bubbleRect.centerY(), radius,
                         mBubblePaint);
             } else if (mDrawIdentifier.equals(WORKSPACE_PORTRAIT) ||
                     mDrawIdentifier.equals(WORKSPACE_LANDSCAPE) ||
                     mDrawIdentifier.equals(WORKSPACE_LARGE)) {
-                int offset = DynamicGrid.pxFromDp(WORKSPACE_CIRCLE_Y_OFFSET_DPS, metrics);
+                Rect cutOutBounds = getWorkspaceCutOutBounds(metrics);
                 // Draw the outer circle
                 mErasePaint.setAlpha(128);
-                eraseCanvas.drawCircle(metrics.widthPixels / 2,
-                        metrics.heightPixels / 2 - offset,
+                eraseCanvas.drawCircle(cutOutBounds.centerX(), cutOutBounds.centerY(),
                         DynamicGrid.pxFromDp(WORKSPACE_OUTER_CIRCLE_RADIUS_DPS, metrics),
                         mErasePaint);
                 // Draw the inner circle
                 mErasePaint.setAlpha(0);
-                eraseCanvas.drawCircle(metrics.widthPixels / 2,
-                        metrics.heightPixels / 2 - offset,
+                eraseCanvas.drawCircle(cutOutBounds.centerX(), cutOutBounds.centerY(),
                         DynamicGrid.pxFromDp(WORKSPACE_INNER_CIRCLE_RADIUS_DPS, metrics),
                         mErasePaint);
                 canvas.drawBitmap(eraseBg, 0, 0, null);
@@ -476,6 +544,7 @@ public class Cling extends FrameLayout implements Insettable, View.OnClickListen
                     mFocusedHotseatApp.draw(canvas);
                 }
             } else if (mDrawIdentifier.equals(MIGRATION_WORKSPACE_PORTRAIT) ||
+                    mDrawIdentifier.equals(MIGRATION_WORKSPACE_LARGE_PORTRAIT) ||
                     mDrawIdentifier.equals(MIGRATION_WORKSPACE_LANDSCAPE)) {
                 int offset = DynamicGrid.pxFromDp(WORKSPACE_CIRCLE_Y_OFFSET_DPS, metrics);
                 // Draw the outer circle
index 7ce0446..8bcf6c3 100644 (file)
@@ -483,9 +483,22 @@ public class DeviceProfile {
     /** Returns the bounds of the workspace page indicators. */
     Rect getWorkspacePageIndicatorBounds(Rect insets) {
         Rect workspacePadding = getWorkspacePadding();
-        int pageIndicatorTop = heightPx - insets.bottom - workspacePadding.bottom;
-        return new Rect(workspacePadding.left, pageIndicatorTop,
-                widthPx - workspacePadding.right, pageIndicatorTop + pageIndicatorHeightPx);
+        if (isLandscape && transposeLayoutWithOrientation) {
+            if (isLayoutRtl) {
+                return new Rect(workspacePadding.left, workspacePadding.top,
+                        workspacePadding.left + pageIndicatorHeightPx,
+                        heightPx - workspacePadding.bottom - insets.bottom);
+            } else {
+                int pageIndicatorLeft = widthPx - workspacePadding.right;
+                return new Rect(pageIndicatorLeft, workspacePadding.top,
+                        pageIndicatorLeft + pageIndicatorHeightPx,
+                        heightPx - workspacePadding.bottom - insets.bottom);
+            }
+        } else {
+            int pageIndicatorTop = heightPx - insets.bottom - workspacePadding.bottom;
+            return new Rect(workspacePadding.left, pageIndicatorTop,
+                    widthPx - workspacePadding.right, pageIndicatorTop + pageIndicatorHeightPx);
+        }
     }
 
     /** Returns the workspace padding in the specified orientation */
index c119999..61a594f 100644 (file)
@@ -4367,17 +4367,17 @@ public class Launcher extends Activity
     }
 
     void showWorkspaceSearchAndHotseat() {
-        mWorkspace.setAlpha(1f);
-        mHotseat.setAlpha(1f);
-        mPageIndicators.setAlpha(1f);
-        mSearchDropTargetBar.showSearchBar(false);
+        if (mWorkspace != null) mWorkspace.setAlpha(1f);
+        if (mHotseat != null) mHotseat.setAlpha(1f);
+        if (mPageIndicators != null) mPageIndicators.setAlpha(1f);
+        if (mSearchDropTargetBar != null) mSearchDropTargetBar.showSearchBar(false);
     }
 
     void hideWorkspaceSearchAndHotseat() {
-        mWorkspace.setAlpha(0f);
-        mHotseat.setAlpha(0f);
-        mPageIndicators.setAlpha(0f);
-        mSearchDropTargetBar.hideSearchBar(false);
+        if (mWorkspace != null) mWorkspace.setAlpha(0f);
+        if (mHotseat != null) mHotseat.setAlpha(0f);
+        if (mPageIndicators != null) mPageIndicators.setAlpha(0f);
+        if (mSearchDropTargetBar != null) mSearchDropTargetBar.hideSearchBar(false);
     }
 
 
index 42a134f..94b062d 100644 (file)
@@ -23,6 +23,7 @@ import android.animation.AnimatorListenerAdapter;
 import android.app.ActivityManager;
 import android.content.Context;
 import android.content.SharedPreferences;
+import android.graphics.Rect;
 import android.os.Bundle;
 import android.os.UserManager;
 import android.view.LayoutInflater;
@@ -34,7 +35,8 @@ import android.widget.TextView;
 class LauncherClings {
     private static final String FIRST_RUN_CLING_DISMISSED_KEY = "cling_gel.first_run.dismissed";
     private static final String MIGRATION_CLING_DISMISSED_KEY = "cling_gel.migration.dismissed";
-    private static final String MIGRATION_WORKSPACE_CLING_DISMISSED_KEY = "cling_gel.migration.dismissed";
+    private static final String MIGRATION_WORKSPACE_CLING_DISMISSED_KEY =
+            "cling_gel.migration_workspace.dismissed";
     private static final String WORKSPACE_CLING_DISMISSED_KEY = "cling_gel.workspace.dismissed";
     private static final String FOLDER_CLING_DISMISSED_KEY = "cling_gel.folder.dismissed";
 
@@ -61,7 +63,7 @@ class LauncherClings {
         Cling cling = (Cling) mLauncher.findViewById(clingId);
         View scrim = null;
         if (scrimId > 0) {
-            scrim = mLauncher.findViewById(R.id.cling_scrim);
+            scrim = mLauncher.findViewById(scrimId);
         }
         if (cling != null) {
             cling.init(mLauncher, scrim);
@@ -76,21 +78,11 @@ class LauncherClings {
     }
 
     /** Returns whether the clings are enabled or should be shown */
-    private boolean isClingsEnabled() {
+    private boolean areClingsEnabled() {
         if (DISABLE_CLINGS) {
             return false;
         }
 
-        // For now, limit only to phones
-        LauncherAppState app = LauncherAppState.getInstance();
-        DeviceProfile grid = app.getDynamicGrid().getDeviceProfile();
-        if (grid.isTablet()) {
-            return false;
-        }
-        if (grid.isLandscape) {
-            return false;
-        }
-
         // disable clings when running in a test harness
         if(ActivityManager.isRunningInTestHarness()) return false;
 
@@ -202,7 +194,7 @@ class LauncherClings {
 
     public boolean shouldShowFirstRunOrMigrationClings() {
         SharedPreferences sharedPrefs = mLauncher.getSharedPrefs();
-        return isClingsEnabled() &&
+        return areClingsEnabled() &&
             !sharedPrefs.getBoolean(FIRST_RUN_CLING_DISMISSED_KEY, false) &&
             !sharedPrefs.getBoolean(MIGRATION_CLING_DISMISSED_KEY, false);
     }
@@ -271,7 +263,7 @@ class LauncherClings {
 
     public void showMigrationWorkspaceCling() {
         // Enable the clings only if they have not been dismissed before
-        if (isClingsEnabled() && !mLauncher.getSharedPrefs().getBoolean(
+        if (areClingsEnabled() && !mLauncher.getSharedPrefs().getBoolean(
                 MIGRATION_WORKSPACE_CLING_DISMISSED_KEY, false)) {
             Cling c = initCling(R.id.migration_workspace_cling, 0, false, true);
             c.updateMigrationWorkspaceBubblePosition();
@@ -284,9 +276,10 @@ class LauncherClings {
 
     public void showWorkspaceCling() {
         // Enable the clings only if they have not been dismissed before
-        if (isClingsEnabled() && !mLauncher.getSharedPrefs().getBoolean(
+        if (areClingsEnabled() && !mLauncher.getSharedPrefs().getBoolean(
                 WORKSPACE_CLING_DISMISSED_KEY, false)) {
             Cling c = initCling(R.id.workspace_cling, 0, false, true);
+            c.updateWorkspaceBubblePosition();
 
             // Set the focused hotseat app if there is one
             c.setFocusedHotseatApp(mLauncher.getFirstRunFocusedHotseatAppDrawableId(),
@@ -301,11 +294,18 @@ class LauncherClings {
     public Cling showFoldersCling() {
         SharedPreferences sharedPrefs = mLauncher.getSharedPrefs();
         // Enable the clings only if they have not been dismissed before
-        if (isClingsEnabled() &&
+        if (areClingsEnabled() &&
                 !sharedPrefs.getBoolean(FOLDER_CLING_DISMISSED_KEY, false) &&
                 !sharedPrefs.getBoolean(Launcher.USER_HAS_MIGRATED, false)) {
             Cling cling = initCling(R.id.folder_cling, R.id.cling_scrim,
                     true, true);
+            Folder openFolder = mLauncher.getWorkspace().getOpenFolder();
+            if (openFolder != null) {
+                Rect openFolderRect = new Rect();
+                openFolder.getHitRect(openFolderRect);
+                cling.setOpenFolderRect(openFolderRect);
+                openFolder.bringToFront();
+            }
             return cling;
         } else {
             removeCling(R.id.folder_cling);