diff options
Diffstat (limited to 'src/com/android/launcher2/CellLayoutChildren.java')
-rw-r--r-- | src/com/android/launcher2/CellLayoutChildren.java | 143 |
1 files changed, 23 insertions, 120 deletions
diff --git a/src/com/android/launcher2/CellLayoutChildren.java b/src/com/android/launcher2/CellLayoutChildren.java index 04996f359..6e78885de 100644 --- a/src/com/android/launcher2/CellLayoutChildren.java +++ b/src/com/android/launcher2/CellLayoutChildren.java @@ -16,12 +16,9 @@ package com.android.launcher2; -import java.util.ArrayList; - import android.app.WallpaperManager; import android.content.Context; import android.graphics.Rect; -import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; @@ -34,33 +31,24 @@ public class CellLayoutChildren extends ViewGroup { private final WallpaperManager mWallpaperManager; - private int mLeftPadding; - private int mTopPadding; - private int mCellWidth; private int mCellHeight; private int mWidthGap; private int mHeightGap; - // Variables relating to resizing widgets - private final ArrayList<AppWidgetResizeFrame> mResizeFrames = - new ArrayList<AppWidgetResizeFrame>(); - private AppWidgetResizeFrame mCurrentResizeFrame; - private int mXDown, mYDown; - public CellLayoutChildren(Context context) { super(context); mWallpaperManager = WallpaperManager.getInstance(context); + } + + public void enableHardwareLayers() { setLayerType(LAYER_TYPE_HARDWARE, null); } - public void setCellDimensions(int cellWidth, int cellHeight, - int leftPadding, int topPadding, int widthGap, int heightGap ) { + public void setCellDimensions(int cellWidth, int cellHeight, int widthGap, int heightGap ) { mCellWidth = cellWidth; mCellHeight = cellHeight; - mLeftPadding = leftPadding; - mTopPadding = topPadding; mWidthGap = widthGap; mHeightGap = heightGap; } @@ -72,7 +60,7 @@ public class CellLayoutChildren extends ViewGroup { CellLayout.LayoutParams lp = (CellLayout.LayoutParams) child.getLayoutParams(); if ((lp.cellX <= x) && (x < lp.cellX + lp.cellHSpan) && - (lp.cellY <= y) && (y < lp.cellY + lp.cellHSpan)) { + (lp.cellY <= y) && (y < lp.cellY + lp.cellVSpan)) { return child; } } @@ -81,27 +69,33 @@ public class CellLayoutChildren extends ViewGroup { @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - final int cellWidth = mCellWidth; - final int cellHeight = mCellHeight; int count = getChildCount(); for (int i = 0; i < count; i++) { View child = getChildAt(i); - CellLayout.LayoutParams lp = (CellLayout.LayoutParams) child.getLayoutParams(); - - lp.setup(cellWidth, cellHeight, mWidthGap, mHeightGap, - mLeftPadding, mTopPadding); - - int childWidthMeasureSpec = MeasureSpec.makeMeasureSpec(lp.width, MeasureSpec.EXACTLY); - int childheightMeasureSpec = MeasureSpec.makeMeasureSpec(lp.height, - MeasureSpec.EXACTLY); - - child.measure(childWidthMeasureSpec, childheightMeasureSpec); + measureChild(child); } int widthSpecSize = MeasureSpec.getSize(widthMeasureSpec); int heightSpecSize = MeasureSpec.getSize(heightMeasureSpec); setMeasuredDimension(widthSpecSize, heightSpecSize); } + public void setupLp(CellLayout.LayoutParams lp) { + lp.setup(mCellWidth, mCellHeight, mWidthGap, mHeightGap); + } + + public void measureChild(View child) { + final int cellWidth = mCellWidth; + final int cellHeight = mCellHeight; + CellLayout.LayoutParams lp = (CellLayout.LayoutParams) child.getLayoutParams(); + + lp.setup(cellWidth, cellHeight, mWidthGap, mHeightGap); + int childWidthMeasureSpec = MeasureSpec.makeMeasureSpec(lp.width, MeasureSpec.EXACTLY); + int childheightMeasureSpec = MeasureSpec.makeMeasureSpec(lp.height, + MeasureSpec.EXACTLY); + + child.measure(childWidthMeasureSpec, childheightMeasureSpec); + } + @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { int count = getChildCount(); @@ -176,95 +170,4 @@ public class CellLayoutChildren extends ViewGroup { protected void setChildrenDrawnWithCacheEnabled(boolean enabled) { super.setChildrenDrawnWithCacheEnabled(enabled); } - - public void clearAllResizeFrames() { - for (AppWidgetResizeFrame frame: mResizeFrames) { - removeView(frame); - } - mResizeFrames.clear(); - } - - public boolean hasResizeFrames() { - return mResizeFrames.size() > 0; - } - - public boolean isWidgetBeingResized() { - return mCurrentResizeFrame != null; - } - - private boolean handleTouchDown(MotionEvent ev) { - Rect hitRect = new Rect(); - - int x = (int) ev.getX(); - int y = (int) ev.getY(); - - for (AppWidgetResizeFrame child: mResizeFrames) { - child.getHitRect(hitRect); - if (hitRect.contains(x, y)) { - if (child.beginResizeIfPointInRegion(x - child.getLeft(), y - child.getTop())) { - mCurrentResizeFrame = child; - mXDown = x; - mYDown = y; - requestDisallowInterceptTouchEvent(true); - return true; - } - } - } - return false; - } - - @Override - public boolean onInterceptTouchEvent(MotionEvent ev) { - if (ev.getAction() == MotionEvent.ACTION_DOWN) { - if (handleTouchDown(ev)) { - return true; - } - } - return false; - } - - @Override - public boolean onTouchEvent(MotionEvent ev) { - boolean handled = false; - int action = ev.getAction(); - - int x = (int) ev.getX(); - int y = (int) ev.getY(); - - if (ev.getAction() == MotionEvent.ACTION_DOWN) { - if (ev.getAction() == MotionEvent.ACTION_DOWN) { - if (handleTouchDown(ev)) { - return true; - } - } - } - - if (mCurrentResizeFrame != null) { - handled = true; - switch (action) { - case MotionEvent.ACTION_MOVE: - mCurrentResizeFrame.visualizeResizeForDelta(x - mXDown, y - mYDown); - break; - case MotionEvent.ACTION_CANCEL: - case MotionEvent.ACTION_UP: - mCurrentResizeFrame.commitResizeForDelta(x - mXDown, y - mYDown); - mCurrentResizeFrame = null; - } - } - return handled; - } - - public void addResizeFrame(ItemInfo itemInfo, LauncherAppWidgetHostView widget, - CellLayout cellLayout) { - AppWidgetResizeFrame resizeFrame = new AppWidgetResizeFrame(getContext(), - itemInfo, widget, cellLayout); - - CellLayout.LayoutParams lp = new CellLayout.LayoutParams(-1, -1, -1, -1); - lp.isLockedToGrid = false; - - addView(resizeFrame, lp); - mResizeFrames.add(resizeFrame); - - resizeFrame.snapToWidget(false); - } } |