Merge "Add seam space for performReorder in MultipageCellLayout" into udc-dev am: 7b01dbd811
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/23086317 Change-Id: Id90d5c81db2575917cee3ca9db9d1190fc692a18 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -1272,7 +1272,7 @@ public class CellLayout extends ViewGroup {
|
|||||||
* @return The X, Y cell of a vacant area that can contain this object,
|
* @return The X, Y cell of a vacant area that can contain this object,
|
||||||
* nearest the requested location.
|
* nearest the requested location.
|
||||||
*/
|
*/
|
||||||
private int[] findNearestArea(int relativeXPos, int relativeYPos, int minSpanX, int minSpanY,
|
protected int[] findNearestArea(int relativeXPos, int relativeYPos, int minSpanX, int minSpanY,
|
||||||
int spanX, int spanY, boolean ignoreOccupied, int[] result, int[] resultSpan) {
|
int spanX, int spanY, boolean ignoreOccupied, int[] result, int[] resultSpan) {
|
||||||
// For items with a spanX / spanY > 1, the passed in point (relativeXPos, relativeYPos)
|
// For items with a spanX / spanY > 1, the passed in point (relativeXPos, relativeYPos)
|
||||||
// corresponds to the center of the item, but we are searching based on the top-left cell,
|
// corresponds to the center of the item, but we are searching based on the top-left cell,
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ import android.view.View;
|
|||||||
|
|
||||||
import com.android.launcher3.celllayout.CellLayoutLayoutParams;
|
import com.android.launcher3.celllayout.CellLayoutLayoutParams;
|
||||||
import com.android.launcher3.celllayout.MulticellReorderAlgorithm;
|
import com.android.launcher3.celllayout.MulticellReorderAlgorithm;
|
||||||
import com.android.launcher3.celllayout.ReorderAlgorithm;
|
|
||||||
import com.android.launcher3.util.CellAndSpan;
|
import com.android.launcher3.util.CellAndSpan;
|
||||||
import com.android.launcher3.util.GridOccupancy;
|
import com.android.launcher3.util.GridOccupancy;
|
||||||
|
|
||||||
@@ -46,6 +45,33 @@ public class MultipageCellLayout extends CellLayout {
|
|||||||
this(context, attrs, 0);
|
this(context, attrs, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int[] findNearestArea(int relativeXPos, int relativeYPos, int minSpanX, int minSpanY,
|
||||||
|
int spanX, int spanY, boolean ignoreOccupied, int[] result, int[] resultSpan) {
|
||||||
|
return createReorderAlgorithm().simulateSeam(
|
||||||
|
() -> super.findNearestArea(relativeXPos, relativeYPos, minSpanX, minSpanY, spanX,
|
||||||
|
spanY, ignoreOccupied, result, resultSpan));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getDirectionVectorForDrop(int dragViewCenterX, int dragViewCenterY, int spanX,
|
||||||
|
int spanY, View dragView, int[] resultDirection) {
|
||||||
|
createReorderAlgorithm().simulateSeam(
|
||||||
|
() -> {
|
||||||
|
super.getDirectionVectorForDrop(dragViewCenterX, dragViewCenterY, spanX, spanY,
|
||||||
|
dragView, resultDirection);
|
||||||
|
return 0;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isNearestDropLocationOccupied(int pixelX, int pixelY, int spanX, int spanY,
|
||||||
|
View dragView, int[] result) {
|
||||||
|
return createReorderAlgorithm().simulateSeam(
|
||||||
|
() -> super.isNearestDropLocationOccupied(pixelX, pixelY, spanX, spanY, dragView,
|
||||||
|
result));
|
||||||
|
}
|
||||||
|
|
||||||
public MultipageCellLayout(Context context, AttributeSet attrs, int defStyle) {
|
public MultipageCellLayout(Context context, AttributeSet attrs, int defStyle) {
|
||||||
super(context, attrs, defStyle);
|
super(context, attrs, defStyle);
|
||||||
mLeftBackground = getContext().getDrawable(R.drawable.bg_celllayout);
|
mLeftBackground = getContext().getDrawable(R.drawable.bg_celllayout);
|
||||||
@@ -71,13 +97,23 @@ public class MultipageCellLayout extends CellLayout {
|
|||||||
cellX++;
|
cellX++;
|
||||||
}
|
}
|
||||||
int finalCellX = cellX;
|
int finalCellX = cellX;
|
||||||
return ((MulticellReorderAlgorithm) createReorderAlgorithm()).simulateSeam(
|
return createReorderAlgorithm().simulateSeam(
|
||||||
() -> super.createAreaForResize(finalCellX, cellY, spanX, spanY, dragView,
|
() -> super.createAreaForResize(finalCellX, cellY, spanX, spanY, dragView,
|
||||||
direction, commit));
|
direction, commit));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ReorderAlgorithm createReorderAlgorithm() {
|
int[] performReorder(int pixelX, int pixelY, int minSpanX, int minSpanY, int spanX, int spanY,
|
||||||
|
View dragView, int[] result, int[] resultSpan, int mode) {
|
||||||
|
if (pixelX >= getWidth() / 2) {
|
||||||
|
pixelX += getCellWidth();
|
||||||
|
}
|
||||||
|
return super.performReorder(pixelX, pixelY, minSpanX, minSpanY, spanX, spanY, dragView,
|
||||||
|
result, resultSpan, mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MulticellReorderAlgorithm createReorderAlgorithm() {
|
||||||
return new MulticellReorderAlgorithm(this);
|
return new MulticellReorderAlgorithm(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user