diff options
author | Patrick Dubroy <dubroy@google.com> | 2010-12-19 22:02:04 -0800 |
---|---|---|
committer | Patrick Dubroy <dubroy@google.com> | 2010-12-20 11:24:54 -0800 |
commit | 047379aa61b4719ab38ce595f23732e8f3b1b8e1 (patch) | |
tree | ccdef847b69a330ddfbb4c4fd776694ef5859e06 | |
parent | 6920c2ce340354286c152cefaf75445314194778 (diff) | |
download | android_packages_apps_Trebuchet-047379aa61b4719ab38ce595f23732e8f3b1b8e1.tar.gz android_packages_apps_Trebuchet-047379aa61b4719ab38ce595f23732e8f3b1b8e1.tar.bz2 android_packages_apps_Trebuchet-047379aa61b4719ab38ce595f23732e8f3b1b8e1.zip |
Don't animate tapped item if the target screen is full
-rw-r--r-- | src/com/android/launcher2/CellLayout.java | 36 | ||||
-rw-r--r-- | src/com/android/launcher2/CustomizePagedView.java | 16 | ||||
-rw-r--r-- | src/com/android/launcher2/Workspace.java | 7 |
3 files changed, 31 insertions, 28 deletions
diff --git a/src/com/android/launcher2/CellLayout.java b/src/com/android/launcher2/CellLayout.java index ef4637ee5..505d46504 100644 --- a/src/com/android/launcher2/CellLayout.java +++ b/src/com/android/launcher2/CellLayout.java @@ -909,19 +909,6 @@ public class CellLayout extends ViewGroup implements Dimmable { } /** - * Estimate the size that a child with the given dimensions will take in the layout. - */ - void estimateChildSize(int minWidth, int minHeight, int[] result) { - // Assuming it's placed at 0, 0, find where the bottom right cell will land - rectToCell(minWidth, minHeight, result); - - // Then figure out the rect it will occupy - cellToRect(0, 0, result[0], result[1], mRectF); - result[0] = (int)mRectF.width(); - result[1] = (int)mRectF.height(); - } - - /** * Estimate where the top left cell of the dragged item will land if it is dropped. * * @param originX The X value of the top left corner of the item @@ -1322,6 +1309,29 @@ public class CellLayout extends ViewGroup implements Dimmable { } /** + * Calculate the grid spans needed to fit given item + */ + public void calculateSpans(ItemInfo info) { + final int minWidth; + final int minHeight; + + if (info instanceof LauncherAppWidgetInfo) { + minWidth = ((LauncherAppWidgetInfo) info).minWidth; + minHeight = ((LauncherAppWidgetInfo) info).minHeight; + } else if (info instanceof PendingAddWidgetInfo) { + minWidth = ((PendingAddWidgetInfo) info).minWidth; + minHeight = ((PendingAddWidgetInfo) info).minHeight; + } else { + // It's not a widget, so it must be 1x1 + info.spanX = info.spanY = 1; + return; + } + int[] spans = rectToCell(minWidth, minHeight, null); + info.spanX = spans[0]; + info.spanY = spans[1]; + } + + /** * Find the first vacant cell, if there is one. * * @param vacant Holds the x and y coordinate of the vacant cell diff --git a/src/com/android/launcher2/CustomizePagedView.java b/src/com/android/launcher2/CustomizePagedView.java index 567292172..4eb852c60 100644 --- a/src/com/android/launcher2/CustomizePagedView.java +++ b/src/com/android/launcher2/CustomizePagedView.java @@ -21,7 +21,7 @@ import com.android.launcher.R; import org.xmlpull.v1.XmlPullParser; import android.animation.Animator; -import android.animation.Animator.AnimatorListener; +import android.animation.AnimatorListenerAdapter; import android.animation.ObjectAnimator; import android.animation.PropertyValuesHolder; import android.animation.TimeInterpolator; @@ -40,7 +40,6 @@ import android.content.res.XmlResourceParser; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.Canvas; -import android.graphics.Color; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.util.Log; @@ -378,11 +377,7 @@ public class CustomizePagedView extends PagedViewWithDraggableItems posAnim.setInterpolator(mQuintEaseOutInterpolator); posAnim.setDuration(ANIMATION_DURATION); - posAnim.addListener(new AnimatorListener() { - public void onAnimationCancel(Animator animation) {} - public void onAnimationRepeat(Animator animation) {} - public void onAnimationStart(Animator animation) {} - + posAnim.addListener(new AnimatorListenerAdapter() { public void onAnimationEnd(Animator animation) { dragLayer.removeView(dragCopy); mLauncher.addExternalItemToScreen(info, layout); @@ -443,7 +438,12 @@ public class CustomizePagedView extends PagedViewWithDraggableItems animateClickFeedback(v, new Runnable() { @Override public void run() { - animateItemOntoScreen(dragView, cl, itemInfo); + cl.calculateSpans(itemInfo); + if (cl.findCellForSpan(null, itemInfo.spanX, itemInfo.spanY)) { + animateItemOntoScreen(dragView, cl, itemInfo); + } else { + mLauncher.showOutOfSpaceMessage(); + } } }); return; diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java index 0268378af..eaa09ac80 100644 --- a/src/com/android/launcher2/Workspace.java +++ b/src/com/android/launcher2/Workspace.java @@ -2217,13 +2217,6 @@ public class Workspace extends SmoothPagedView localPixelX, localPixelY, spanX, spanY, ignoreView, recycle); } - /** - * Estimate the size that a child with the given dimensions will take in the current screen. - */ - void estimateChildSize(int minWidth, int minHeight, int[] result) { - ((CellLayout)getChildAt(mCurrentPage)).estimateChildSize(minWidth, minHeight, result); - } - void setLauncher(Launcher launcher) { mLauncher = launcher; mSpringLoadedDragController = new SpringLoadedDragController(mLauncher); |