summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/Cling.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/launcher3/Cling.java')
-rw-r--r--src/com/android/launcher3/Cling.java98
1 files changed, 67 insertions, 31 deletions
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