Merge "Update calculation method for Overview UI placement on tablets" into tm-qpr-dev

This commit is contained in:
Jeremy Sim
2022-07-29 18:56:40 +00:00
committed by Android (Google) Code Review
21 changed files with 66 additions and 113 deletions

View File

@@ -14,16 +14,23 @@
* limitations under the License.
*/
-->
<!-- Applies to small tablet screens -->
<resources>
<dimen name="navigation_key_padding">25dp</dimen>
<!-- Task View -->
<!-- Overview Task Views -->
<!-- A touch target for icons, sometimes slightly larger than the icons themselves -->
<dimen name="task_thumbnail_icon_size">48dp</dimen>
<!-- The icon size for the focused task, placed in center of touch target -->
<dimen name="task_thumbnail_icon_drawable_size">44dp</dimen>
<!-- The space under the focused task icon -->
<dimen name="overview_task_margin">12dp</dimen>
<!-- The icon size of all non-focused task icons, placed in center of touch target -->
<dimen name="task_thumbnail_icon_drawable_size_grid">44dp</dimen>
<dimen name="overview_task_margin_grid">12dp</dimen>
<!-- The space between grid rows (when there's 2 rows of thumbnails) -->
<dimen name="overview_grid_row_spacing">28dp</dimen>
<!-- The horizontal space between tasks -->
<dimen name="overview_page_spacing">36dp</dimen>
<!-- The space to the left and to the right of the "Clear all" button -->
<dimen name="overview_grid_side_margin">64dp</dimen>
</resources>

View File

@@ -14,14 +14,23 @@
* limitations under the License.
*/
-->
<!-- Applies to large tablet screens -->
<resources>
<!-- Task View -->
<!-- Overview Task Views -->
<!-- The primary task thumbnail uses up to this much of the total screen height/width -->
<item name="overview_max_scale" format="float" type="dimen">0.7</item>
<!-- A touch target for icons, sometimes slightly larger than the icons themselves -->
<dimen name="task_thumbnail_icon_size">48dp</dimen>
<!-- The icon size for the focused task, placed in center of touch target -->
<dimen name="task_thumbnail_icon_drawable_size">44dp</dimen>
<!-- The space under the focused task icon -->
<dimen name="overview_task_margin">16dp</dimen>
<!-- The icon size of all non-focused task icons, placed in center of touch target -->
<dimen name="task_thumbnail_icon_drawable_size_grid">44dp</dimen>
<dimen name="overview_task_margin_grid">16dp</dimen>
<!-- The space between grid rows (when there's 2 rows of thumbnails) -->
<dimen name="overview_grid_row_spacing">36dp</dimen>
<!-- The horizontal space between tasks -->
<dimen name="overview_page_spacing">44dp</dimen>
<!-- The space to the left and to the right of the "Clear all" button -->
<dimen name="overview_grid_side_margin">64dp</dimen>
</resources>

View File

@@ -31,14 +31,19 @@
<dimen name="overview_minimum_next_prev_size">50dp</dimen>
<!-- Task View -->
<dimen name="task_thumbnail_icon_size">48dp</dimen>
<dimen name="task_thumbnail_icon_drawable_size">44dp</dimen>
<dimen name="overview_task_margin">16dp</dimen>
<dimen name="overview_page_spacing">16dp</dimen>
<dimen name="task_icon_cache_default_icon_size">72dp</dimen>
<!-- Overview Task Views -->
<!-- The primary task thumbnail uses up to this much of the total screen height/width -->
<item name="overview_max_scale" format="float" type="dimen">0.7</item>
<!-- A touch target for icons, sometimes slightly larger than the icons themselves -->
<dimen name="task_thumbnail_icon_size">48dp</dimen>
<!-- The icon size for the focused task, placed in center of touch target -->
<dimen name="task_thumbnail_icon_drawable_size">44dp</dimen>
<!-- The space under the focused task icon -->
<dimen name="overview_task_margin">16dp</dimen>
<!-- The horizontal space between tasks -->
<dimen name="overview_page_spacing">16dp</dimen>
<dimen name="task_icon_cache_default_icon_size">72dp</dimen>
<item name="overview_modal_max_scale" format="float" type="dimen">1.1</item>
<!-- Overrideable in overlay that provides the Overview Actions. -->

View File

@@ -866,10 +866,9 @@ public class TaskView extends FrameLayout implements Reusable {
int thumbnailTopMargin = deviceProfile.overviewTaskThumbnailTopMarginPx;
int taskIconHeight = deviceProfile.overviewTaskIconSizePx;
int taskMargin = isGridTask ? deviceProfile.overviewTaskMarginGridPx
: deviceProfile.overviewTaskMarginPx;
int taskIconMargin = thumbnailTopMargin - taskIconHeight - taskMargin;
orientationHandler.setTaskIconParams(iconParams, taskIconMargin, taskIconHeight,
int taskMargin = deviceProfile.overviewTaskMarginPx;
orientationHandler.setTaskIconParams(iconParams, taskMargin, taskIconHeight,
thumbnailTopMargin, isRtl);
iconParams.width = iconParams.height = taskIconHeight;
mIconView.setLayoutParams(iconParams);

View File

@@ -339,11 +339,6 @@ class DeviceProfilePhone3ButtonTest : DeviceProfileBaseTest() {
assertThat(dp.overviewTaskMarginPx).isEqualTo(56)
}
@Test
fun overviewTaskMarginGridPx() {
assertThat(dp.overviewTaskMarginGridPx).isEqualTo(0)
}
@Test
fun overviewTaskIconSizePx() {
assertThat(dp.overviewTaskIconSizePx).isEqualTo(168)
@@ -361,7 +356,7 @@ class DeviceProfilePhone3ButtonTest : DeviceProfileBaseTest() {
@Test
fun overviewTaskThumbnailTopMarginPx() {
assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(280)
assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(224)
}
@Test
@@ -386,7 +381,7 @@ class DeviceProfilePhone3ButtonTest : DeviceProfileBaseTest() {
@Test
fun overviewRowSpacing() {
assertThat(dp.overviewRowSpacing).isEqualTo(-112)
assertThat(dp.overviewRowSpacing).isEqualTo(0)
}
@Test

View File

@@ -339,11 +339,6 @@ class DeviceProfilePhoneTest : DeviceProfileBaseTest() {
assertThat(dp.overviewTaskMarginPx).isEqualTo(56)
}
@Test
fun overviewTaskMarginGridPx() {
assertThat(dp.overviewTaskMarginGridPx).isEqualTo(0)
}
@Test
fun overviewTaskIconSizePx() {
assertThat(dp.overviewTaskIconSizePx).isEqualTo(168)
@@ -361,7 +356,7 @@ class DeviceProfilePhoneTest : DeviceProfileBaseTest() {
@Test
fun overviewTaskThumbnailTopMarginPx() {
assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(280)
assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(224)
}
@Test
@@ -386,7 +381,7 @@ class DeviceProfilePhoneTest : DeviceProfileBaseTest() {
@Test
fun overviewRowSpacing() {
assertThat(dp.overviewRowSpacing).isEqualTo(-112)
assertThat(dp.overviewRowSpacing).isEqualTo(0)
}
@Test

View File

@@ -339,11 +339,6 @@ class DeviceProfileTabletLandscape3ButtonTest : DeviceProfileBaseTest() {
assertThat(dp.overviewTaskMarginPx).isEqualTo(32)
}
@Test
fun overviewTaskMarginGridPx() {
assertThat(dp.overviewTaskMarginGridPx).isEqualTo(32)
}
@Test
fun overviewTaskIconSizePx() {
assertThat(dp.overviewTaskIconSizePx).isEqualTo(96)
@@ -361,7 +356,7 @@ class DeviceProfileTabletLandscape3ButtonTest : DeviceProfileBaseTest() {
@Test
fun overviewTaskThumbnailTopMarginPx() {
assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(160)
assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(128)
}
@Test
@@ -386,7 +381,7 @@ class DeviceProfileTabletLandscape3ButtonTest : DeviceProfileBaseTest() {
@Test
fun overviewRowSpacing() {
assertThat(dp.overviewRowSpacing).isEqualTo(40)
assertThat(dp.overviewRowSpacing).isEqualTo(72)
}
@Test

View File

@@ -339,11 +339,6 @@ class DeviceProfileTabletLandscapeTest : DeviceProfileBaseTest() {
assertThat(dp.overviewTaskMarginPx).isEqualTo(32)
}
@Test
fun overviewTaskMarginGridPx() {
assertThat(dp.overviewTaskMarginGridPx).isEqualTo(32)
}
@Test
fun overviewTaskIconSizePx() {
assertThat(dp.overviewTaskIconSizePx).isEqualTo(96)
@@ -361,7 +356,7 @@ class DeviceProfileTabletLandscapeTest : DeviceProfileBaseTest() {
@Test
fun overviewTaskThumbnailTopMarginPx() {
assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(160)
assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(128)
}
@Test
@@ -386,7 +381,7 @@ class DeviceProfileTabletLandscapeTest : DeviceProfileBaseTest() {
@Test
fun overviewRowSpacing() {
assertThat(dp.overviewRowSpacing).isEqualTo(40)
assertThat(dp.overviewRowSpacing).isEqualTo(72)
}
@Test

View File

@@ -339,11 +339,6 @@ class DeviceProfileTabletPortrait3ButtonTest : DeviceProfileBaseTest() {
assertThat(dp.overviewTaskMarginPx).isEqualTo(32)
}
@Test
fun overviewTaskMarginGridPx() {
assertThat(dp.overviewTaskMarginGridPx).isEqualTo(32)
}
@Test
fun overviewTaskIconSizePx() {
assertThat(dp.overviewTaskIconSizePx).isEqualTo(96)
@@ -361,7 +356,7 @@ class DeviceProfileTabletPortrait3ButtonTest : DeviceProfileBaseTest() {
@Test
fun overviewTaskThumbnailTopMarginPx() {
assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(160)
assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(128)
}
@Test
@@ -386,7 +381,7 @@ class DeviceProfileTabletPortrait3ButtonTest : DeviceProfileBaseTest() {
@Test
fun overviewRowSpacing() {
assertThat(dp.overviewRowSpacing).isEqualTo(40)
assertThat(dp.overviewRowSpacing).isEqualTo(72)
}
@Test

View File

@@ -339,11 +339,6 @@ class DeviceProfileTabletPortraitTest : DeviceProfileBaseTest() {
assertThat(dp.overviewTaskMarginPx).isEqualTo(32)
}
@Test
fun overviewTaskMarginGridPx() {
assertThat(dp.overviewTaskMarginGridPx).isEqualTo(32)
}
@Test
fun overviewTaskIconSizePx() {
assertThat(dp.overviewTaskIconSizePx).isEqualTo(96)
@@ -361,7 +356,7 @@ class DeviceProfileTabletPortraitTest : DeviceProfileBaseTest() {
@Test
fun overviewTaskThumbnailTopMarginPx() {
assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(160)
assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(128)
}
@Test
@@ -386,7 +381,7 @@ class DeviceProfileTabletPortraitTest : DeviceProfileBaseTest() {
@Test
fun overviewRowSpacing() {
assertThat(dp.overviewRowSpacing).isEqualTo(40)
assertThat(dp.overviewRowSpacing).isEqualTo(72)
}
@Test

View File

@@ -339,11 +339,6 @@ class DeviceProfileTwoPanelLandscape3ButtonTest : DeviceProfileBaseTest() {
assertThat(dp.overviewTaskMarginPx).isEqualTo(32)
}
@Test
fun overviewTaskMarginGridPx() {
assertThat(dp.overviewTaskMarginGridPx).isEqualTo(32)
}
@Test
fun overviewTaskIconSizePx() {
assertThat(dp.overviewTaskIconSizePx).isEqualTo(96)
@@ -361,7 +356,7 @@ class DeviceProfileTwoPanelLandscape3ButtonTest : DeviceProfileBaseTest() {
@Test
fun overviewTaskThumbnailTopMarginPx() {
assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(160)
assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(128)
}
@Test
@@ -386,7 +381,7 @@ class DeviceProfileTwoPanelLandscape3ButtonTest : DeviceProfileBaseTest() {
@Test
fun overviewRowSpacing() {
assertThat(dp.overviewRowSpacing).isEqualTo(40)
assertThat(dp.overviewRowSpacing).isEqualTo(72)
}
@Test

View File

@@ -339,11 +339,6 @@ class DeviceProfileTwoPanelLandscapeTest : DeviceProfileBaseTest() {
assertThat(dp.overviewTaskMarginPx).isEqualTo(32)
}
@Test
fun overviewTaskMarginGridPx() {
assertThat(dp.overviewTaskMarginGridPx).isEqualTo(32)
}
@Test
fun overviewTaskIconSizePx() {
assertThat(dp.overviewTaskIconSizePx).isEqualTo(96)
@@ -361,7 +356,7 @@ class DeviceProfileTwoPanelLandscapeTest : DeviceProfileBaseTest() {
@Test
fun overviewTaskThumbnailTopMarginPx() {
assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(160)
assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(128)
}
@Test
@@ -386,7 +381,7 @@ class DeviceProfileTwoPanelLandscapeTest : DeviceProfileBaseTest() {
@Test
fun overviewRowSpacing() {
assertThat(dp.overviewRowSpacing).isEqualTo(40)
assertThat(dp.overviewRowSpacing).isEqualTo(72)
}
@Test

View File

@@ -339,11 +339,6 @@ class DeviceProfileTwoPanelPortrait3ButtonTest : DeviceProfileBaseTest() {
assertThat(dp.overviewTaskMarginPx).isEqualTo(32)
}
@Test
fun overviewTaskMarginGridPx() {
assertThat(dp.overviewTaskMarginGridPx).isEqualTo(32)
}
@Test
fun overviewTaskIconSizePx() {
assertThat(dp.overviewTaskIconSizePx).isEqualTo(96)
@@ -361,7 +356,7 @@ class DeviceProfileTwoPanelPortrait3ButtonTest : DeviceProfileBaseTest() {
@Test
fun overviewTaskThumbnailTopMarginPx() {
assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(160)
assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(128)
}
@Test
@@ -386,7 +381,7 @@ class DeviceProfileTwoPanelPortrait3ButtonTest : DeviceProfileBaseTest() {
@Test
fun overviewRowSpacing() {
assertThat(dp.overviewRowSpacing).isEqualTo(40)
assertThat(dp.overviewRowSpacing).isEqualTo(72)
}
@Test

View File

@@ -339,11 +339,6 @@ class DeviceProfileTwoPanelPortraitTest : DeviceProfileBaseTest() {
assertThat(dp.overviewTaskMarginPx).isEqualTo(32)
}
@Test
fun overviewTaskMarginGridPx() {
assertThat(dp.overviewTaskMarginGridPx).isEqualTo(32)
}
@Test
fun overviewTaskIconSizePx() {
assertThat(dp.overviewTaskIconSizePx).isEqualTo(96)
@@ -361,7 +356,7 @@ class DeviceProfileTwoPanelPortraitTest : DeviceProfileBaseTest() {
@Test
fun overviewTaskThumbnailTopMarginPx() {
assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(160)
assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(128)
}
@Test
@@ -386,7 +381,7 @@ class DeviceProfileTwoPanelPortraitTest : DeviceProfileBaseTest() {
@Test
fun overviewRowSpacing() {
assertThat(dp.overviewRowSpacing).isEqualTo(40)
assertThat(dp.overviewRowSpacing).isEqualTo(72)
}
@Test

View File

@@ -339,11 +339,6 @@ class DeviceProfileVerticalBar3ButtonTest : DeviceProfileBaseTest() {
assertThat(dp.overviewTaskMarginPx).isEqualTo(56)
}
@Test
fun overviewTaskMarginGridPx() {
assertThat(dp.overviewTaskMarginGridPx).isEqualTo(0)
}
@Test
fun overviewTaskIconSizePx() {
assertThat(dp.overviewTaskIconSizePx).isEqualTo(168)
@@ -361,7 +356,7 @@ class DeviceProfileVerticalBar3ButtonTest : DeviceProfileBaseTest() {
@Test
fun overviewTaskThumbnailTopMarginPx() {
assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(280)
assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(224)
}
@Test
@@ -386,7 +381,7 @@ class DeviceProfileVerticalBar3ButtonTest : DeviceProfileBaseTest() {
@Test
fun overviewRowSpacing() {
assertThat(dp.overviewRowSpacing).isEqualTo(-112)
assertThat(dp.overviewRowSpacing).isEqualTo(0)
}
@Test

View File

@@ -339,11 +339,6 @@ class DeviceProfileVerticalBarTest : DeviceProfileBaseTest() {
assertThat(dp.overviewTaskMarginPx).isEqualTo(56)
}
@Test
fun overviewTaskMarginGridPx() {
assertThat(dp.overviewTaskMarginGridPx).isEqualTo(0)
}
@Test
fun overviewTaskIconSizePx() {
assertThat(dp.overviewTaskIconSizePx).isEqualTo(168)
@@ -361,7 +356,7 @@ class DeviceProfileVerticalBarTest : DeviceProfileBaseTest() {
@Test
fun overviewTaskThumbnailTopMarginPx() {
assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(280)
assertThat(dp.overviewTaskThumbnailTopMarginPx).isEqualTo(224)
}
@Test
@@ -386,7 +381,7 @@ class DeviceProfileVerticalBarTest : DeviceProfileBaseTest() {
@Test
fun overviewRowSpacing() {
assertThat(dp.overviewRowSpacing).isEqualTo(-112)
assertThat(dp.overviewRowSpacing).isEqualTo(0)
}
@Test

View File

@@ -381,7 +381,6 @@
<dimen name="task_thumbnail_icon_drawable_size">0dp</dimen>
<dimen name="task_thumbnail_icon_drawable_size_grid">0dp</dimen>
<dimen name="overview_task_margin">0dp</dimen>
<dimen name="overview_task_margin_grid">0dp</dimen>
<dimen name="overview_actions_height">0dp</dimen>
<dimen name="overview_actions_button_spacing">0dp</dimen>
<dimen name="overview_actions_margin_gesture">0dp</dimen>

View File

@@ -191,7 +191,6 @@ public class DeviceProfile {
// Overview
public int overviewTaskMarginPx;
public int overviewTaskMarginGridPx;
public int overviewTaskIconSizePx;
public int overviewTaskIconDrawableSizePx;
public int overviewTaskIconDrawableSizeGridPx;
@@ -426,25 +425,18 @@ public class DeviceProfile {
}
overviewTaskMarginPx = res.getDimensionPixelSize(R.dimen.overview_task_margin);
overviewTaskMarginGridPx = res.getDimensionPixelSize(R.dimen.overview_task_margin_grid);
overviewTaskIconSizePx = res.getDimensionPixelSize(R.dimen.task_thumbnail_icon_size);
overviewTaskIconDrawableSizePx =
res.getDimensionPixelSize(R.dimen.task_thumbnail_icon_drawable_size);
overviewTaskIconDrawableSizeGridPx =
res.getDimensionPixelSize(R.dimen.task_thumbnail_icon_drawable_size_grid);
overviewTaskThumbnailTopMarginPx = overviewTaskIconSizePx + overviewTaskMarginPx * 2;
overviewTaskThumbnailTopMarginPx = overviewTaskIconSizePx + overviewTaskMarginPx;
overviewActionsTopMarginPx = res.getDimensionPixelSize(R.dimen.overview_actions_top_margin);
overviewPageSpacing = res.getDimensionPixelSize(R.dimen.overview_page_spacing);
overviewActionsButtonSpacing = res.getDimensionPixelSize(
R.dimen.overview_actions_button_spacing);
overviewActionsHeight = res.getDimensionPixelSize(R.dimen.overview_actions_height);
// Grid task's top margin is only overviewTaskIconSizePx + overviewTaskMarginGridPx, but
// overviewTaskThumbnailTopMarginPx is applied to all TaskThumbnailView, so exclude the
// extra margin when calculating row spacing.
int extraTopMargin = overviewTaskThumbnailTopMarginPx - overviewTaskIconSizePx
- overviewTaskMarginGridPx;
overviewRowSpacing = res.getDimensionPixelSize(R.dimen.overview_grid_row_spacing)
- extraTopMargin;
overviewRowSpacing = res.getDimensionPixelSize(R.dimen.overview_grid_row_spacing);
overviewGridSideMargin = res.getDimensionPixelSize(R.dimen.overview_grid_side_margin);
// Calculate all of the remaining variables.
@@ -1379,7 +1371,6 @@ public class DeviceProfile {
writer.println(prefix + pxToDpStr("workspaceBottomPadding", workspaceBottomPadding));
writer.println(prefix + pxToDpStr("overviewTaskMarginPx", overviewTaskMarginPx));
writer.println(prefix + pxToDpStr("overviewTaskMarginGridPx", overviewTaskMarginGridPx));
writer.println(prefix + pxToDpStr("overviewTaskIconSizePx", overviewTaskIconSizePx));
writer.println(prefix + pxToDpStr("overviewTaskIconDrawableSizePx",
overviewTaskIconDrawableSizePx));

View File

@@ -523,6 +523,7 @@ public class LandscapePagedViewHandler implements PagedOrientationHandler {
iconParams.rightMargin = -taskIconHeight - taskIconMargin / 2;
iconParams.leftMargin = 0;
iconParams.topMargin = thumbnailTopMargin / 2;
iconParams.bottomMargin = 0;
}
@Override

View File

@@ -52,9 +52,9 @@ import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.util.DisplayController;
import com.android.launcher3.util.SplitConfigurationOptions;
import com.android.launcher3.util.SplitConfigurationOptions.SplitBounds;
import com.android.launcher3.util.SplitConfigurationOptions.SplitPositionOption;
import com.android.launcher3.util.SplitConfigurationOptions.StagePosition;
import com.android.launcher3.util.SplitConfigurationOptions.SplitBounds;
import com.android.launcher3.views.BaseDragLayer;
import java.util.List;
@@ -658,8 +658,9 @@ public class PortraitPagedViewHandler implements PagedOrientationHandler {
public void setTaskIconParams(FrameLayout.LayoutParams iconParams, int taskIconMargin,
int taskIconHeight, int thumbnailTopMargin, boolean isRtl) {
iconParams.gravity = TOP | CENTER_HORIZONTAL;
// Reset margins, since they may have been set on rotation
iconParams.leftMargin = iconParams.rightMargin = 0;
iconParams.topMargin = taskIconMargin;
iconParams.topMargin = iconParams.bottomMargin = 0;
}
@Override

View File

@@ -216,6 +216,7 @@ public class SeascapePagedViewHandler extends LandscapePagedViewHandler {
iconParams.leftMargin = -taskIconHeight - taskIconMargin / 2;
iconParams.rightMargin = 0;
iconParams.topMargin = thumbnailTopMargin / 2;
iconParams.bottomMargin = 0;
}
@Override