Merge "Fix stuttering animation when you press home" into ics-mr1
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 7.0 KiB |
@@ -15,6 +15,6 @@
|
||||
-->
|
||||
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_pressed="true" android:drawable="@drawable/homescreen_small_blue" />
|
||||
<item android:state_pressed="true" android:drawable="@drawable/flying_icon_bg_pressed" />
|
||||
<item android:drawable="@android:color/transparent" />
|
||||
</selector>
|
||||
|
||||
@@ -96,12 +96,7 @@ public class CellLayout extends ViewGroup {
|
||||
private float mBackgroundAlphaMultiplier = 1.0f;
|
||||
|
||||
private Drawable mNormalBackground;
|
||||
private Drawable mActiveBackground;
|
||||
private Drawable mActiveGlowBackground;
|
||||
private Drawable mNormalBackgroundMini;
|
||||
private Drawable mNormalGlowBackgroundMini;
|
||||
private Drawable mActiveBackgroundMini;
|
||||
private Drawable mActiveGlowBackgroundMini;
|
||||
private Drawable mOverScrollForegroundDrawable;
|
||||
private Drawable mOverScrollLeft;
|
||||
private Drawable mOverScrollRight;
|
||||
@@ -112,11 +107,8 @@ public class CellLayout extends ViewGroup {
|
||||
private float mGlowBackgroundAlpha;
|
||||
private int mForegroundPadding;
|
||||
|
||||
private boolean mAcceptsDrops = true;
|
||||
// If we're actively dragging something over this screen, mIsDragOverlapping is true
|
||||
private boolean mIsDragOverlapping = false;
|
||||
private boolean mIsDragOccuring = false;
|
||||
private boolean mIsDefaultDropTarget = false;
|
||||
private final Point mDragCenter = new Point();
|
||||
|
||||
// These arrays are used to implement the drag visualization on x-large screens.
|
||||
@@ -182,25 +174,15 @@ public class CellLayout extends ViewGroup {
|
||||
final Resources res = getResources();
|
||||
|
||||
mNormalBackground = res.getDrawable(R.drawable.homescreen_blue_normal_holo);
|
||||
mActiveBackground = res.getDrawable(R.drawable.homescreen_blue_strong_holo);
|
||||
mActiveGlowBackground = res.getDrawable(R.drawable.homescreen_blue_strong_holo);
|
||||
|
||||
mNormalBackgroundMini = res.getDrawable(R.drawable.homescreen_small_blue);
|
||||
mNormalGlowBackgroundMini = res.getDrawable(R.drawable.homescreen_small_blue_strong);
|
||||
mActiveBackgroundMini = res.getDrawable(R.drawable.homescreen_small_blue_strong);
|
||||
mActiveGlowBackgroundMini = res.getDrawable(R.drawable.homescreen_small_blue_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);
|
||||
mActiveGlowBackground.setFilterBitmap(true);
|
||||
mNormalBackgroundMini.setFilterBitmap(true);
|
||||
mNormalGlowBackgroundMini.setFilterBitmap(true);
|
||||
mActiveBackgroundMini.setFilterBitmap(true);
|
||||
mActiveGlowBackgroundMini.setFilterBitmap(true);
|
||||
|
||||
// Initialize the data structures used for the drag visualization.
|
||||
|
||||
@@ -358,20 +340,6 @@ public class CellLayout extends ViewGroup {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void setIsDefaultDropTarget(boolean isDefaultDropTarget) {
|
||||
if (mIsDefaultDropTarget != isDefaultDropTarget) {
|
||||
mIsDefaultDropTarget = isDefaultDropTarget;
|
||||
invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
void setIsDragOccuring(boolean isDragOccuring) {
|
||||
if (mIsDragOccuring != isDragOccuring) {
|
||||
mIsDragOccuring = isDragOccuring;
|
||||
invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
void setIsDragOverlapping(boolean isDragOverlapping) {
|
||||
if (mIsDragOverlapping != isDragOverlapping) {
|
||||
mIsDragOverlapping = isDragOverlapping;
|
||||
@@ -454,47 +422,17 @@ public class CellLayout extends ViewGroup {
|
||||
// backgrounds
|
||||
if (mBackgroundAlpha > 0.0f) {
|
||||
Drawable bg;
|
||||
boolean mini = getScaleX() < 0.5f;
|
||||
|
||||
if (mIsDragOverlapping) {
|
||||
// In the mini case, we draw the active_glow bg *over* the active background
|
||||
bg = mini ? mActiveBackgroundMini : mActiveGlowBackground;
|
||||
} else if (mIsDragOccuring && mAcceptsDrops) {
|
||||
bg = mini ? mActiveBackgroundMini : mActiveBackground;
|
||||
} else if (mIsDefaultDropTarget && mini) {
|
||||
bg = mNormalGlowBackgroundMini;
|
||||
bg = mActiveGlowBackground;
|
||||
} else {
|
||||
bg = mini ? mNormalBackgroundMini : mNormalBackground;
|
||||
bg = mNormalBackground;
|
||||
}
|
||||
|
||||
bg.setAlpha((int) (mBackgroundAlpha * mBackgroundAlphaMultiplier * 255));
|
||||
bg.setBounds(mBackgroundRect);
|
||||
bg.draw(canvas);
|
||||
|
||||
if (mini && mIsDragOverlapping) {
|
||||
boolean modifiedClipRect = false;
|
||||
if (mGlowBackgroundScale > 1.0f) {
|
||||
// If the hover background's scale is greater than 1, we'll be drawing outside
|
||||
// the bounds of this CellLayout. Get around that by temporarily increasing the
|
||||
// size of the clip rect
|
||||
float marginFraction = (mGlowBackgroundScale - 1.0f) / 2.0f;
|
||||
Rect clipRect = canvas.getClipBounds();
|
||||
int marginX = (int) (marginFraction * (clipRect.right - clipRect.left));
|
||||
int marginY = (int) (marginFraction * (clipRect.bottom - clipRect.top));
|
||||
canvas.save(Canvas.CLIP_SAVE_FLAG);
|
||||
canvas.clipRect(-marginX, -marginY,
|
||||
getWidth() + marginX, getHeight() + marginY, Region.Op.REPLACE);
|
||||
modifiedClipRect = true;
|
||||
}
|
||||
|
||||
mActiveGlowBackgroundMini.setAlpha(
|
||||
(int) (mBackgroundAlpha * mGlowBackgroundAlpha * 255));
|
||||
mActiveGlowBackgroundMini.setBounds(mGlowBackgroundRect);
|
||||
mActiveGlowBackgroundMini.draw(canvas);
|
||||
if (modifiedClipRect) {
|
||||
canvas.restore();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (mCrosshairsVisibility > 0.0f) {
|
||||
@@ -691,13 +629,6 @@ public class CellLayout extends ViewGroup {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void setAcceptsDrops(boolean acceptsDrops) {
|
||||
if (mAcceptsDrops != acceptsDrops) {
|
||||
mAcceptsDrops = acceptsDrops;
|
||||
invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeAllViews() {
|
||||
clearOccupiedCells();
|
||||
|
||||
@@ -1494,6 +1494,9 @@ public class Workspace extends SmoothPagedView
|
||||
}
|
||||
|
||||
void changeState(final State state, boolean animated, int delay) {
|
||||
if (mState == state) {
|
||||
return;
|
||||
}
|
||||
if (mFirstLayout) {
|
||||
// (mFirstLayout == "first layout has not happened yet")
|
||||
// cancel any pending shrinks that were set earlier
|
||||
@@ -2359,7 +2362,6 @@ public class Workspace extends SmoothPagedView
|
||||
|
||||
// Show the current page outlines to indicate that we can accept this drop
|
||||
showOutlines();
|
||||
layout.setIsDragOccuring(true);
|
||||
layout.onDragEnter();
|
||||
layout.visualizeDropLocation(null, mDragOutline, x, y, 1, 1, null, null);
|
||||
|
||||
@@ -2420,7 +2422,6 @@ public class Workspace extends SmoothPagedView
|
||||
}
|
||||
case DragEvent.ACTION_DRAG_ENDED:
|
||||
// Hide the page outlines after the drop
|
||||
layout.setIsDragOccuring(false);
|
||||
layout.onDragExit();
|
||||
hideOutlines();
|
||||
return true;
|
||||
|
||||