diff options
-rw-r--r-- | res/layout-land/folder_cling.xml | 46 | ||||
-rw-r--r-- | res/layout-land/launcher.xml | 5 | ||||
-rw-r--r-- | res/layout-port/folder_cling.xml | 42 | ||||
-rw-r--r-- | res/layout-port/launcher.xml | 6 | ||||
-rw-r--r-- | res/values/colors.xml | 2 | ||||
-rw-r--r-- | res/values/strings.xml | 8 | ||||
-rw-r--r-- | src/com/android/launcher3/Cling.java | 98 | ||||
-rw-r--r-- | src/com/android/launcher3/Folder.java | 3 | ||||
-rw-r--r-- | src/com/android/launcher3/Launcher.java | 21 |
9 files changed, 130 insertions, 101 deletions
diff --git a/res/layout-land/folder_cling.xml b/res/layout-land/folder_cling.xml index 171e39554..1f4a115af 100644 --- a/res/layout-land/folder_cling.xml +++ b/res/layout-land/folder_cling.xml @@ -20,39 +20,29 @@ <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_marginStart="10dp" - android:layout_marginEnd="10dp" - android:layout_marginTop="40dp" - android:layout_marginBottom="20dp"> + android:layout_marginStart="15dp" + android:layout_marginEnd="15dp" + android:layout_marginTop="10dp" + android:layout_marginBottom="10dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="vertical"> - <LinearLayout + 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: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> - <ImageView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:src="@drawable/cling_arrow_down" /> + android:text="@string/folder_cling_create_folder" /> </LinearLayout> </FrameLayout> <Button diff --git a/res/layout-land/launcher.xml b/res/layout-land/launcher.xml index 2b9a9f3e8..86fc1edad 100644 --- a/res/layout-land/launcher.xml +++ b/res/layout-land/launcher.xml @@ -57,6 +57,11 @@ <!-- 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. --> + <FrameLayout + 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" diff --git a/res/layout-port/folder_cling.xml b/res/layout-port/folder_cling.xml index bd4b5e2b1..1f4a115af 100644 --- a/res/layout-port/folder_cling.xml +++ b/res/layout-port/folder_cling.xml @@ -20,39 +20,29 @@ <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_marginStart="20dp" - android:layout_marginEnd="20dp" + android:layout_marginStart="15dp" + android:layout_marginEnd="15dp" android:layout_marginTop="10dp" android:layout_marginBottom="10dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="vertical"> - <LinearLayout + 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: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> - <ImageView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:src="@drawable/cling_arrow_down" /> + android:text="@string/folder_cling_create_folder" /> </LinearLayout> </FrameLayout> <Button diff --git a/res/layout-port/launcher.xml b/res/layout-port/launcher.xml index faef7a594..ef2f3ace1 100644 --- a/res/layout-port/launcher.xml +++ b/res/layout-port/launcher.xml @@ -64,6 +64,11 @@ <!-- 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. --> + <FrameLayout + 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" @@ -74,7 +79,6 @@ 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/values/colors.xml b/res/values/colors.xml index 43a856d9f..e4278d991 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -36,5 +36,5 @@ <color name="folder_items_text_color">#FF333333</color> <color name="outline_color">#FFFFFFFF</color> - <color name="first_run_cling_circle_background_color">#FF83AEE8</color> + <color name="first_run_cling_circle_background_color">#FF8BB4E9</color> </resources> diff --git a/res/values/strings.xml b/res/values/strings.xml index 6c05f7d29..ac372fd72 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -228,7 +228,7 @@ s --> <!-- The title text for the workspace cling [CHAR_LIMIT=none] --> <string name="first_run_cling_title">Welcome!</string> <!-- The description of how to use the workspace [CHAR_LIMIT=none] --> - <string name="first_run_cling_description">Make yourself at Home</string> + <string name="first_run_cling_description">Make yourself at Home.</string> <!-- The description of how to use the workspace [CHAR_LIMIT=none] --> <string name="first_run_cling_custom_content_hint"></string> <!-- The description of how to use the workspace [CHAR_LIMIT=none] --> @@ -238,15 +238,15 @@ s --> <!-- The title text for the workspace cling [CHAR_LIMIT=none] --> <string name="workspace_cling_title">Organize your space</string> <!-- The description of how to use the workspace [CHAR_LIMIT=none] --> - <string name="workspace_cling_move_item">Touch & hold background to manage wallpaper, widgets and settings</string> + <string name="workspace_cling_move_item">Touch & hold background to manage wallpaper, widgets and settings.</string> <!-- The title text for the All Apps cling [CHAR_LIMIT=none] --> <string name="all_apps_cling_title">Choose some apps</string> <!-- The description of how to pick up and add an item to the workspace [CHAR_LIMIT=none] --> <string name="all_apps_cling_add_item">To add an app to your Home screen, touch & hold it.</string> <!-- The title text for the Folder cling [CHAR_LIMIT=none] --> - <string name="folder_cling_title">Create new folders for your apps</string> + <string name="folder_cling_title">Here\'s a folder</string> <!-- The description of how to create a folder [CHAR_LIMIT=none] --> - <string name="folder_cling_create_folder">Touch & hold an app, then move it on top of another app icon</string> + <string name="folder_cling_create_folder">To create one like this, touch & hold an app, then move it over another.</string> <!-- The text on the button to dismiss a cling [CHAR_LIMIT=none] --> <string name="cling_dismiss">OK</string> <!-- Error message on dummy custom cling layout [DO NOT TRANSLATE] --> diff --git a/src/com/android/launcher3/Cling.java b/src/com/android/launcher3/Cling.java index 7ca699030..2656ad6a8 100644 --- a/src/com/android/launcher3/Cling.java +++ b/src/com/android/launcher3/Cling.java @@ -70,6 +70,9 @@ public class Cling extends FrameLayout implements Insettable, View.OnLongClickLi private Paint mBubblePaint; private Paint mDotPaint; + private View mScrimView; + private int mBackgroundColor; + private final Rect mInsets = new Rect(); public Cling(Context context) { @@ -91,9 +94,11 @@ public class Cling extends FrameLayout implements Insettable, View.OnLongClickLi } - void init(Launcher l, int[] positionData) { + void init(Launcher l, View scrim) { if (!mIsInitialized) { mLauncher = l; + mScrimView = scrim; + mBackgroundColor = 0xdd000000; setOnLongClickListener(this); mErasePaint = new Paint(); @@ -128,10 +133,7 @@ public class Cling extends FrameLayout implements Insettable, View.OnLongClickLi content.animate() .alpha(1f) .setDuration(duration) - .setListener(new AnimatorListenerAdapter() { - public void onAnimationEnd(Animator animation) { - }; - }) + .setListener(null) .start(); setAlpha(1f); } else { @@ -142,11 +144,24 @@ public class Cling extends FrameLayout implements Insettable, View.OnLongClickLi .alpha(1f) .setInterpolator(new AccelerateInterpolator()) .setDuration(duration) + .setListener(null) .start(); } else { setAlpha(1f); } } + + // Show the scrim if necessary + if (mScrimView != null) { + mScrimView.setVisibility(View.VISIBLE); + mScrimView.setAlpha(0f); + mScrimView.animate() + .alpha(1f) + .setDuration(duration) + .setListener(null) + .start(); + } + setFocusableInTouchMode(true); post(new Runnable() { public void run() { @@ -160,26 +175,42 @@ public class Cling extends FrameLayout implements Insettable, View.OnLongClickLi if (mDrawIdentifier.equals(FIRST_RUN_PORTRAIT) || mDrawIdentifier.equals(FIRST_RUN_LANDSCAPE)) { View content = getContent(); - ObjectAnimator anim = LauncherAnimUtils.ofFloat(content, "alpha", 0f); - anim.setDuration(duration); - anim.addListener(new AnimatorListenerAdapter() { - public void onAnimationEnd(Animator animation) { - // We are about to trigger the workspace cling, so don't do anything else - setVisibility(View.GONE); - postCb.run(); - }; - }); - anim.start(); + content.animate() + .alpha(0f) + .setDuration(duration) + .setListener(new AnimatorListenerAdapter() { + public void onAnimationEnd(Animator animation) { + // We are about to trigger the workspace cling, so don't do anything else + setVisibility(View.GONE); + postCb.run(); + }; + }) + .start(); } else { - ObjectAnimator anim = LauncherAnimUtils.ofFloat(this, "alpha", 0f); - anim.setDuration(duration); - anim.addListener(new AnimatorListenerAdapter() { - public void onAnimationEnd(Animator animation) { - setVisibility(View.GONE); - postCb.run(); - }; - }); - anim.start(); + animate() + .alpha(0f) + .setDuration(duration) + .setListener(new AnimatorListenerAdapter() { + public void onAnimationEnd(Animator animation) { + // We are about to trigger the workspace cling, so don't do anything else + setVisibility(View.GONE); + postCb.run(); + }; + }) + .start(); + } + + // Show the scrim if necessary + if (mScrimView != null) { + mScrimView.animate() + .alpha(0f) + .setDuration(duration) + .setListener(new AnimatorListenerAdapter() { + public void onAnimationEnd(Animator animation) { + mScrimView.setVisibility(View.GONE); + }; + }) + .start(); } } @@ -188,6 +219,12 @@ public class Cling extends FrameLayout implements Insettable, View.OnLongClickLi mIsInitialized = false; } + void bringScrimToFront() { + if (mScrimView != null) { + mScrimView.bringToFront(); + } + } + @Override public void setInsets(Rect insets) { mInsets.set(insets); @@ -262,13 +299,12 @@ public class Cling extends FrameLayout implements Insettable, View.OnLongClickLi // Draw the background Bitmap eraseBg = null; Canvas eraseCanvas = null; - if (mBackground != null) { + if (mScrimView != null) { + // Skip drawing the background + mScrimView.setBackgroundColor(mBackgroundColor); + } else if (mBackground != null) { mBackground.setBounds(0, 0, getMeasuredWidth(), getMeasuredHeight()); mBackground.draw(canvas); - } else if (mDrawIdentifier.equals(FOLDER_PORTRAIT) || - mDrawIdentifier.equals(FOLDER_LANDSCAPE) || - mDrawIdentifier.equals(FOLDER_LARGE)) { - canvas.drawColor(0xcc000000); } else if (mDrawIdentifier.equals(WORKSPACE_PORTRAIT) || mDrawIdentifier.equals(WORKSPACE_LANDSCAPE) || mDrawIdentifier.equals(WORKSPACE_LARGE)) { @@ -276,9 +312,9 @@ public class Cling extends FrameLayout implements Insettable, View.OnLongClickLi eraseBg = Bitmap.createBitmap(getMeasuredWidth(), getMeasuredHeight(), Bitmap.Config.ARGB_8888); eraseCanvas = new Canvas(eraseBg); - eraseCanvas.drawColor(0xdd000000); + eraseCanvas.drawColor(mBackgroundColor); } else { - canvas.drawColor(0xdd000000); + canvas.drawColor(mBackgroundColor); } // Draw everything else diff --git a/src/com/android/launcher3/Folder.java b/src/com/android/launcher3/Folder.java index a71d9b2c0..a4cb11734 100644 --- a/src/com/android/launcher3/Folder.java +++ b/src/com/android/launcher3/Folder.java @@ -453,8 +453,9 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList setLayerType(LAYER_TYPE_NONE, null); Cling cling = mLauncher.showFirstRunFoldersCling(); if (cling != null) { - cling.bringToFront(); + cling.bringScrimToFront(); bringToFront(); + cling.bringToFront(); } setFocusOnFirstChild(); } diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 149a5230f..63168a37a 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -274,7 +274,7 @@ public class Launcher extends Activity private boolean mUserPresent = true; private boolean mVisible = false; private boolean mAttached = false; - private static final boolean DISABLE_CLINGS = true; + private static final boolean DISABLE_CLINGS = false; private static final boolean DISABLE_CUSTOM_CLINGS = true; private static LocaleConfiguration sLocaleConfiguration = null; @@ -4064,11 +4064,15 @@ public class Launcher extends Activity return true; } - private Cling initCling(int clingId, int[] positionData, boolean animate, + private Cling initCling(int clingId, int scrimId, boolean animate, boolean dimNavBarVisibilty) { - final Cling cling = (Cling) findViewById(clingId); + Cling cling = (Cling) findViewById(clingId); + View scrim = null; + if (scrimId > 0) { + scrim = findViewById(R.id.scrim); + } if (cling != null) { - cling.init(this, positionData); + cling.init(this, scrim); cling.show(animate, SHOW_CLING_DURATION); if (dimNavBarVisibilty) { @@ -4087,7 +4091,6 @@ public class Launcher extends Activity final Runnable cleanUpClingCb = new Runnable() { public void run() { cling.cleanup(); - /* // We should update the shared preferences on a background thread new Thread("dismissClingThread") { public void run() { @@ -4096,7 +4099,6 @@ public class Launcher extends Activity editor.commit(); } }.start(); - */ if (postAnimationCb != null) { postAnimationCb.run(); } @@ -4177,7 +4179,7 @@ public class Launcher extends Activity ccHint.setVisibility(View.VISIBLE); } } - initCling(R.id.first_run_cling, null, false, true); + initCling(R.id.first_run_cling, 0, false, true); } else { removeCling(R.id.first_run_cling); } @@ -4194,7 +4196,7 @@ public class Launcher extends Activity // Enable the clings only if they have not been dismissed before if (isClingsEnabled() && !mSharedPrefs.getBoolean(Cling.WORKSPACE_CLING_DISMISSED_KEY, false)) { - initCling(R.id.workspace_cling, null, false, true); + initCling(R.id.workspace_cling, 0, false, true); } else { removeCling(R.id.workspace_cling); } @@ -4203,7 +4205,8 @@ public class Launcher extends Activity // Enable the clings only if they have not been dismissed before if (isClingsEnabled() && !mSharedPrefs.getBoolean(Cling.FOLDER_CLING_DISMISSED_KEY, false)) { - Cling cling = initCling(R.id.folder_cling, null, true, true); + Cling cling = initCling(R.id.folder_cling, R.id.cling_scrim, + true, true); return cling; } else { removeCling(R.id.folder_cling); |