summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher2/CellLayout.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/launcher2/CellLayout.java')
-rw-r--r--src/com/android/launcher2/CellLayout.java40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/com/android/launcher2/CellLayout.java b/src/com/android/launcher2/CellLayout.java
index 667df8bec..0d80d16e6 100644
--- a/src/com/android/launcher2/CellLayout.java
+++ b/src/com/android/launcher2/CellLayout.java
@@ -32,10 +32,13 @@ import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.PointF;
+import android.graphics.PorterDuff;
+import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Region;
import android.graphics.drawable.Drawable;
+import android.graphics.drawable.NinePatchDrawable;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
@@ -88,6 +91,7 @@ public class CellLayout extends ViewGroup {
private ArrayList<FolderRingAnimator> mFolderOuterRings = new ArrayList<FolderRingAnimator>();
private int[] mFolderLeaveBehindCell = {-1, -1};
+ private int mForegroundAlpha = 0;
private float mBackgroundAlpha;
private float mBackgroundAlphaMultiplier = 1.0f;
@@ -98,10 +102,15 @@ public class CellLayout extends ViewGroup {
private Drawable mNormalGlowBackgroundMini;
private Drawable mActiveBackgroundMini;
private Drawable mActiveGlowBackgroundMini;
+ private Drawable mOverScrollForegroundDrawable;
+ private Drawable mOverScrollLeft;
+ private Drawable mOverScrollRight;
private Rect mBackgroundRect;
+ private Rect mForegroundRect;
private Rect mGlowBackgroundRect;
private float mGlowBackgroundScale;
private float mGlowBackgroundAlpha;
+ private int mForegroundPadding;
private boolean mAcceptsDrops = true;
// If we're actively dragging something over this screen, mIsDragOverlapping is true
@@ -180,6 +189,10 @@ public class CellLayout extends ViewGroup {
mNormalGlowBackgroundMini = res.getDrawable(R.drawable.homescreen_small_blue_strong);
mActiveBackgroundMini = res.getDrawable(R.drawable.homescreen_small_green);
mActiveGlowBackgroundMini = res.getDrawable(R.drawable.homescreen_small_green_strong);
+ mOverScrollLeft = res.getDrawable(R.drawable.overscroll_glow_left);
+ mOverScrollRight = res.getDrawable(R.drawable.overscroll_glow_right);
+ mForegroundPadding =
+ res.getDimensionPixelSize(R.dimen.workspace_overscroll_drawable_padding);
mNormalBackground.setFilterBitmap(true);
mActiveBackground.setFilterBitmap(true);
@@ -261,6 +274,7 @@ public class CellLayout extends ViewGroup {
}
mBackgroundRect = new Rect();
+ mForegroundRect = new Rect();
mGlowBackgroundRect = new Rect();
setHoverScale(1.0f);
setHoverAlpha(1.0f);
@@ -311,6 +325,18 @@ public class CellLayout extends ViewGroup {
icon.getBottom() + getPaddingTop() + padding);
}
+ void setOverScrollAmount(float r, boolean left) {
+ if (left && mOverScrollForegroundDrawable != mOverScrollLeft) {
+ mOverScrollForegroundDrawable = mOverScrollLeft;
+ } else if (!left && mOverScrollForegroundDrawable != mOverScrollRight) {
+ mOverScrollForegroundDrawable = mOverScrollRight;
+ }
+
+ mForegroundAlpha = (int) Math.round((r * 255));
+ mOverScrollForegroundDrawable.setAlpha(mForegroundAlpha);
+ invalidate();
+ }
+
void setPressedOrFocusedIcon(BubbleTextView icon) {
// We draw the pressed or focused BubbleTextView's background in CellLayout because it
// requires an expanded clip rect (due to the glow's blur radius)
@@ -577,6 +603,18 @@ public class CellLayout extends ViewGroup {
}
}
+ @Override
+ protected void dispatchDraw(Canvas canvas) {
+ super.dispatchDraw(canvas);
+ if (mForegroundAlpha > 0) {
+ mOverScrollForegroundDrawable.setBounds(mForegroundRect);
+ Paint p = ((NinePatchDrawable) mOverScrollForegroundDrawable).getPaint();
+ p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.ADD));
+ mOverScrollForegroundDrawable.draw(canvas);
+ p.setXfermode(null);
+ }
+ }
+
public void showFolderAccept(FolderRingAnimator fra) {
mFolderOuterRings.add(fra);
}
@@ -962,6 +1000,8 @@ public class CellLayout extends ViewGroup {
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
mBackgroundRect.set(0, 0, w, h);
+ mForegroundRect.set(mForegroundPadding, mForegroundPadding,
+ w - 2 * mForegroundPadding, h - 2 * mForegroundPadding);
updateGlowRect();
}