Merge "Fix stuttering animation when you press home" into ics-mr1

This commit is contained in:
Michael Jurka
2011-10-31 22:53:39 -07:00
committed by Android (Google) Code Review
9 changed files with 6 additions and 74 deletions

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

+1 -1
View File
@@ -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>
+2 -71
View File
@@ -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();
+3 -2
View File
@@ -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;