Loading src/com/android/launcher3/DeviceProfile.java +5 −0 Original line number Diff line number Diff line Loading @@ -218,6 +218,9 @@ public class DeviceProfile { public int overviewRowSpacing; public int overviewGridSideMargin; // Split staging public int splitPlaceholderInset; // Widgets private final ViewScaleProvider mViewScaleProvider; Loading Loading @@ -459,6 +462,8 @@ public class DeviceProfile { overviewRowSpacing = res.getDimensionPixelSize(R.dimen.overview_grid_row_spacing); overviewGridSideMargin = res.getDimensionPixelSize(R.dimen.overview_grid_side_margin); splitPlaceholderInset = res.getDimensionPixelSize(R.dimen.split_placeholder_inset); // Calculate all of the remaining variables. extraSpace = updateAvailableDimensions(res); Loading src/com/android/launcher3/touch/LandscapePagedViewHandler.java +12 −4 Original line number Diff line number Diff line Loading @@ -424,8 +424,8 @@ public class LandscapePagedViewHandler implements PagedOrientationHandler { // In fake land/seascape, the placeholder always needs to go to the "top" of the device, // which is the same bounds as 0 rotation. int width = dp.widthPx; int insetThickness = dp.getInsets().top; out.set(0, 0, width, placeholderHeight + insetThickness); int insetSizeAdjustment = getPlaceholderSizeAdjustment(dp); out.set(0, 0, width, placeholderHeight + insetSizeAdjustment); out.inset(placeholderInset, 0); // Adjust the top to account for content off screen. This will help to animate the view in Loading @@ -442,13 +442,21 @@ public class LandscapePagedViewHandler implements PagedOrientationHandler { float onScreenRectCenterY, float fullscreenScaleX, float fullscreenScaleY, int drawableWidth, int drawableHeight, DeviceProfile dp, @StagePosition int stagePosition) { float inset = dp.getInsets().top; float insetAdjustment = getPlaceholderSizeAdjustment(dp) / 2f; out.setX(Math.round(onScreenRectCenterX / fullscreenScaleX - 1.0f * drawableWidth / 2)); out.setY(Math.round((onScreenRectCenterY + (inset / 2f)) / fullscreenScaleY out.setY(Math.round((onScreenRectCenterY + insetAdjustment) / fullscreenScaleY - 1.0f * drawableHeight / 2)); } /** * The split placeholder comes with a default inset to buffer the icon from the top of the * screen. But if the device already has a large inset (from cutouts etc), use that instead. */ private int getPlaceholderSizeAdjustment(DeviceProfile dp) { return Math.max(dp.getInsets().top - dp.splitPlaceholderInset, 0); } @Override public void setSplitInstructionsParams(View out, DeviceProfile dp, int splitInstructionsHeight, int splitInstructionsWidth, int threeButtonNavShift) { Loading src/com/android/launcher3/touch/PortraitPagedViewHandler.java +21 −13 Original line number Diff line number Diff line Loading @@ -445,13 +445,9 @@ public class PortraitPagedViewHandler implements PagedOrientationHandler { int screenWidth = dp.widthPx; int screenHeight = dp.heightPx; boolean pinToRight = stagePosition == STAGE_POSITION_BOTTOM_OR_RIGHT; int insetThickness; if (!dp.isLandscape) { insetThickness = dp.getInsets().top; } else { insetThickness = pinToRight ? dp.getInsets().right : dp.getInsets().left; } out.set(0, 0, screenWidth, placeholderHeight + insetThickness); int insetSizeAdjustment = getPlaceholderSizeAdjustment(dp, pinToRight); out.set(0, 0, screenWidth, placeholderHeight + insetSizeAdjustment); if (!dp.isLandscape) { // portrait, phone or tablet - spans width of screen, nothing else to do out.inset(placeholderInset, 0); Loading Loading @@ -496,20 +492,18 @@ public class PortraitPagedViewHandler implements PagedOrientationHandler { int drawableWidth, int drawableHeight, DeviceProfile dp, @StagePosition int stagePosition) { boolean pinToRight = stagePosition == STAGE_POSITION_BOTTOM_OR_RIGHT; float insetAdjustment = getPlaceholderSizeAdjustment(dp, pinToRight) / 2f; if (!dp.isLandscape) { float inset = dp.getInsets().top; out.setX(Math.round(onScreenRectCenterX / fullscreenScaleX - 1.0f * drawableWidth / 2)); out.setY(Math.round((onScreenRectCenterY + (inset / 2f)) / fullscreenScaleY out.setY(Math.round((onScreenRectCenterY + insetAdjustment) / fullscreenScaleY - 1.0f * drawableHeight / 2)); } else { if (pinToRight) { float inset = dp.getInsets().right; out.setX(Math.round((onScreenRectCenterX - (inset / 2f)) / fullscreenScaleX out.setX(Math.round((onScreenRectCenterX - insetAdjustment) / fullscreenScaleX - 1.0f * drawableWidth / 2)); } else { float inset = dp.getInsets().left; out.setX(Math.round((onScreenRectCenterX + (inset / 2f)) / fullscreenScaleX out.setX(Math.round((onScreenRectCenterX + insetAdjustment) / fullscreenScaleX - 1.0f * drawableWidth / 2)); } out.setY(Math.round(onScreenRectCenterY / fullscreenScaleY Loading @@ -517,6 +511,20 @@ public class PortraitPagedViewHandler implements PagedOrientationHandler { } } /** * The split placeholder comes with a default inset to buffer the icon from the top of the * screen. But if the device already has a large inset (from cutouts etc), use that instead. */ private int getPlaceholderSizeAdjustment(DeviceProfile dp, boolean pinToRight) { int insetThickness; if (!dp.isLandscape) { insetThickness = dp.getInsets().top; } else { insetThickness = pinToRight ? dp.getInsets().right : dp.getInsets().left; } return Math.max(insetThickness - dp.splitPlaceholderInset, 0); } @Override public void setSplitInstructionsParams(View out, DeviceProfile dp, int splitInstructionsHeight, int splitInstructionsWidth, int threeButtonNavShift) { Loading Loading
src/com/android/launcher3/DeviceProfile.java +5 −0 Original line number Diff line number Diff line Loading @@ -218,6 +218,9 @@ public class DeviceProfile { public int overviewRowSpacing; public int overviewGridSideMargin; // Split staging public int splitPlaceholderInset; // Widgets private final ViewScaleProvider mViewScaleProvider; Loading Loading @@ -459,6 +462,8 @@ public class DeviceProfile { overviewRowSpacing = res.getDimensionPixelSize(R.dimen.overview_grid_row_spacing); overviewGridSideMargin = res.getDimensionPixelSize(R.dimen.overview_grid_side_margin); splitPlaceholderInset = res.getDimensionPixelSize(R.dimen.split_placeholder_inset); // Calculate all of the remaining variables. extraSpace = updateAvailableDimensions(res); Loading
src/com/android/launcher3/touch/LandscapePagedViewHandler.java +12 −4 Original line number Diff line number Diff line Loading @@ -424,8 +424,8 @@ public class LandscapePagedViewHandler implements PagedOrientationHandler { // In fake land/seascape, the placeholder always needs to go to the "top" of the device, // which is the same bounds as 0 rotation. int width = dp.widthPx; int insetThickness = dp.getInsets().top; out.set(0, 0, width, placeholderHeight + insetThickness); int insetSizeAdjustment = getPlaceholderSizeAdjustment(dp); out.set(0, 0, width, placeholderHeight + insetSizeAdjustment); out.inset(placeholderInset, 0); // Adjust the top to account for content off screen. This will help to animate the view in Loading @@ -442,13 +442,21 @@ public class LandscapePagedViewHandler implements PagedOrientationHandler { float onScreenRectCenterY, float fullscreenScaleX, float fullscreenScaleY, int drawableWidth, int drawableHeight, DeviceProfile dp, @StagePosition int stagePosition) { float inset = dp.getInsets().top; float insetAdjustment = getPlaceholderSizeAdjustment(dp) / 2f; out.setX(Math.round(onScreenRectCenterX / fullscreenScaleX - 1.0f * drawableWidth / 2)); out.setY(Math.round((onScreenRectCenterY + (inset / 2f)) / fullscreenScaleY out.setY(Math.round((onScreenRectCenterY + insetAdjustment) / fullscreenScaleY - 1.0f * drawableHeight / 2)); } /** * The split placeholder comes with a default inset to buffer the icon from the top of the * screen. But if the device already has a large inset (from cutouts etc), use that instead. */ private int getPlaceholderSizeAdjustment(DeviceProfile dp) { return Math.max(dp.getInsets().top - dp.splitPlaceholderInset, 0); } @Override public void setSplitInstructionsParams(View out, DeviceProfile dp, int splitInstructionsHeight, int splitInstructionsWidth, int threeButtonNavShift) { Loading
src/com/android/launcher3/touch/PortraitPagedViewHandler.java +21 −13 Original line number Diff line number Diff line Loading @@ -445,13 +445,9 @@ public class PortraitPagedViewHandler implements PagedOrientationHandler { int screenWidth = dp.widthPx; int screenHeight = dp.heightPx; boolean pinToRight = stagePosition == STAGE_POSITION_BOTTOM_OR_RIGHT; int insetThickness; if (!dp.isLandscape) { insetThickness = dp.getInsets().top; } else { insetThickness = pinToRight ? dp.getInsets().right : dp.getInsets().left; } out.set(0, 0, screenWidth, placeholderHeight + insetThickness); int insetSizeAdjustment = getPlaceholderSizeAdjustment(dp, pinToRight); out.set(0, 0, screenWidth, placeholderHeight + insetSizeAdjustment); if (!dp.isLandscape) { // portrait, phone or tablet - spans width of screen, nothing else to do out.inset(placeholderInset, 0); Loading Loading @@ -496,20 +492,18 @@ public class PortraitPagedViewHandler implements PagedOrientationHandler { int drawableWidth, int drawableHeight, DeviceProfile dp, @StagePosition int stagePosition) { boolean pinToRight = stagePosition == STAGE_POSITION_BOTTOM_OR_RIGHT; float insetAdjustment = getPlaceholderSizeAdjustment(dp, pinToRight) / 2f; if (!dp.isLandscape) { float inset = dp.getInsets().top; out.setX(Math.round(onScreenRectCenterX / fullscreenScaleX - 1.0f * drawableWidth / 2)); out.setY(Math.round((onScreenRectCenterY + (inset / 2f)) / fullscreenScaleY out.setY(Math.round((onScreenRectCenterY + insetAdjustment) / fullscreenScaleY - 1.0f * drawableHeight / 2)); } else { if (pinToRight) { float inset = dp.getInsets().right; out.setX(Math.round((onScreenRectCenterX - (inset / 2f)) / fullscreenScaleX out.setX(Math.round((onScreenRectCenterX - insetAdjustment) / fullscreenScaleX - 1.0f * drawableWidth / 2)); } else { float inset = dp.getInsets().left; out.setX(Math.round((onScreenRectCenterX + (inset / 2f)) / fullscreenScaleX out.setX(Math.round((onScreenRectCenterX + insetAdjustment) / fullscreenScaleX - 1.0f * drawableWidth / 2)); } out.setY(Math.round(onScreenRectCenterY / fullscreenScaleY Loading @@ -517,6 +511,20 @@ public class PortraitPagedViewHandler implements PagedOrientationHandler { } } /** * The split placeholder comes with a default inset to buffer the icon from the top of the * screen. But if the device already has a large inset (from cutouts etc), use that instead. */ private int getPlaceholderSizeAdjustment(DeviceProfile dp, boolean pinToRight) { int insetThickness; if (!dp.isLandscape) { insetThickness = dp.getInsets().top; } else { insetThickness = pinToRight ? dp.getInsets().right : dp.getInsets().left; } return Math.max(insetThickness - dp.splitPlaceholderInset, 0); } @Override public void setSplitInstructionsParams(View out, DeviceProfile dp, int splitInstructionsHeight, int splitInstructionsWidth, int threeButtonNavShift) { Loading