Merge "Fix placement bug with split staging icon in RtL" into tm-dev
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -458,29 +458,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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user