[automerge] Fix placement bug with split staging icon in RtL 2p: 43c79704ed

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/17668514

Change-Id: I4a85a0dd0acb50a37736220c560d72ad24866797
This commit is contained in:
Presubmit Automerger Backend
2022-04-09 01:05:30 +00:00
4 changed files with 19 additions and 22 deletions
@@ -239,12 +239,10 @@ public class FloatingTaskView extends FrameLayout {
* offscreen).
*/
void centerIconView(IconView iconView, float onScreenRectCenterX, float onScreenRectCenterY) {
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) iconView.getLayoutParams();
mOrientationHandler.updateStagedSplitIconParams(params, onScreenRectCenterX,
mOrientationHandler.updateStagedSplitIconParams(iconView, onScreenRectCenterX,
onScreenRectCenterY, mFullscreenParams.mScaleX, mFullscreenParams.mScaleY,
iconView.getDrawableWidth(), iconView.getDrawableHeight(),
mActivity.getDeviceProfile(), mStagePosition);
iconView.setLayoutParams(params);
}
private static class SplitOverlayProperties {
@@ -413,16 +413,15 @@ public class LandscapePagedViewHandler implements PagedOrientationHandler {
}
@Override
public void updateStagedSplitIconParams(FrameLayout.LayoutParams out, float onScreenRectCenterX,
public void updateStagedSplitIconParams(View out, float onScreenRectCenterX,
float onScreenRectCenterY, float fullscreenScaleX, float fullscreenScaleY,
int drawableWidth, int drawableHeight, DeviceProfile dp,
@StagePosition int stagePosition) {
float inset = dp.getInsets().top;
out.leftMargin = Math.round(onScreenRectCenterX / fullscreenScaleX
- 1.0f * drawableWidth / 2);
out.topMargin = Math.round((onScreenRectCenterY + (inset / 2f)) / fullscreenScaleY
- 1.0f * drawableHeight / 2);
out.setX(Math.round(onScreenRectCenterX / fullscreenScaleX
- 1.0f * drawableWidth / 2));
out.setY(Math.round((onScreenRectCenterY + (inset / 2f)) / fullscreenScaleY
- 1.0f * drawableHeight / 2));
}
@Override
@@ -117,7 +117,7 @@ public interface PagedOrientationHandler {
/**
* Centers an icon in the split staging area, accounting for insets.
* @param out The LayoutParams of the icon that needs to be centered.
* @param out The icon that needs to be centered.
* @param onScreenRectCenterX The x-center of the on-screen staging area (most of the Rect is
* offscreen).
* @param onScreenRectCenterY The y-center of the on-screen staging area (most of the Rect is
@@ -129,7 +129,7 @@ public interface PagedOrientationHandler {
* @param dp The device profile, used to report rotation and hardware insets.
* @param stagePosition 0 if the staging area is pinned to top/left, 1 for bottom/right.
*/
void updateStagedSplitIconParams(FrameLayout.LayoutParams out, float onScreenRectCenterX,
void updateStagedSplitIconParams(View out, float onScreenRectCenterX,
float onScreenRectCenterY, float fullscreenScaleX, float fullscreenScaleY,
int drawableWidth, int drawableHeight, DeviceProfile dp,
@StagePosition int stagePosition);
@@ -487,29 +487,29 @@ public class PortraitPagedViewHandler implements PagedOrientationHandler {
}
@Override
public void updateStagedSplitIconParams(FrameLayout.LayoutParams out, float onScreenRectCenterX,
public void updateStagedSplitIconParams(View out, float onScreenRectCenterX,
float onScreenRectCenterY, float fullscreenScaleX, float fullscreenScaleY,
int drawableWidth, int drawableHeight, DeviceProfile dp,
@StagePosition int stagePosition) {
boolean pinToRight = stagePosition == STAGE_POSITION_BOTTOM_OR_RIGHT;
if (!dp.isLandscape) {
float inset = dp.getInsets().top;
out.leftMargin = Math.round(onScreenRectCenterX / fullscreenScaleX
- 1.0f * drawableWidth / 2);
out.topMargin = Math.round((onScreenRectCenterY + (inset / 2f)) / fullscreenScaleY
- 1.0f * drawableHeight / 2);
out.setX(Math.round(onScreenRectCenterX / fullscreenScaleX
- 1.0f * drawableWidth / 2));
out.setY(Math.round((onScreenRectCenterY + (inset / 2f)) / fullscreenScaleY
- 1.0f * drawableHeight / 2));
} else {
if (pinToRight) {
float inset = dp.getInsets().right;
out.leftMargin = Math.round((onScreenRectCenterX - (inset / 2f)) / fullscreenScaleX
- 1.0f * drawableWidth / 2);
out.setX(Math.round((onScreenRectCenterX - (inset / 2f)) / fullscreenScaleX
- 1.0f * drawableWidth / 2));
} else {
float inset = dp.getInsets().left;
out.leftMargin = Math.round((onScreenRectCenterX + (inset / 2f)) / fullscreenScaleX
- 1.0f * drawableWidth / 2);
out.setX(Math.round((onScreenRectCenterX + (inset / 2f)) / fullscreenScaleX
- 1.0f * drawableWidth / 2));
}
out.topMargin = Math.round(onScreenRectCenterY / fullscreenScaleY
- 1.0f * drawableHeight / 2);
out.setY(Math.round(onScreenRectCenterY / fullscreenScaleY
- 1.0f * drawableHeight / 2));
}
}