diff --git a/quickstep/res/layout-land/keyboard_quick_switch_taskview_square.xml b/quickstep/res/layout-land/keyboard_quick_switch_taskview_square.xml new file mode 100644 index 0000000000..0eccd8efba --- /dev/null +++ b/quickstep/res/layout-land/keyboard_quick_switch_taskview_square.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + diff --git a/quickstep/res/layout/keyboard_quick_switch_taskview_square.xml b/quickstep/res/layout/keyboard_quick_switch_taskview_square.xml new file mode 100644 index 0000000000..14749494b0 --- /dev/null +++ b/quickstep/res/layout/keyboard_quick_switch_taskview_square.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + diff --git a/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchController.java b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchController.java index 089b33d2c6..e4cc6bbd77 100644 --- a/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchController.java +++ b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchController.java @@ -29,6 +29,7 @@ import com.android.quickstep.LauncherActivityInterface; import com.android.quickstep.RecentsModel; import com.android.quickstep.util.DesktopTask; import com.android.quickstep.util.GroupTask; +import com.android.quickstep.util.LayoutUtils; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.recents.model.ThumbnailData; import com.android.systemui.shared.system.ActivityManagerWrapper; @@ -299,5 +300,10 @@ public final class KeyboardQuickSwitchController implements boolean isFirstTaskRunning() { return isTaskRunning(getTaskAt(0)); } + + boolean isAspectRatioSquare() { + return mControllers != null && LayoutUtils.isAspectRatioSquare( + mControllers.taskbarActivityContext.getDeviceProfile().aspectRatio); + } } } diff --git a/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchView.java b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchView.java index 766784e326..a527c82864 100644 --- a/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchView.java +++ b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchView.java @@ -204,7 +204,9 @@ public class KeyboardQuickSwitchView extends ConstraintLayout { /* isFinalView= */ i == tasksToDisplay - 1 && numHiddenTasks == 0 && !useDesktopTaskView, /* useSmallStartSpacing= */ false, - R.layout.keyboard_quick_switch_taskview, + mViewCallbacks.isAspectRatioSquare() + ? R.layout.keyboard_quick_switch_taskview_square + : R.layout.keyboard_quick_switch_taskview, layoutInflater, previousTaskView); diff --git a/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchViewController.java b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchViewController.java index 097e210b9a..40e77e2394 100644 --- a/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchViewController.java @@ -279,5 +279,9 @@ public class KeyboardQuickSwitchViewController { void updateIconInBackground(Task task, Consumer callback) { mControllerCallbacks.updateIconInBackground(task, callback); } + + boolean isAspectRatioSquare() { + return mControllerCallbacks.isAspectRatioSquare(); + } } } diff --git a/quickstep/src/com/android/quickstep/interaction/GestureSandboxActivity.java b/quickstep/src/com/android/quickstep/interaction/GestureSandboxActivity.java index 36ea9269b4..acc9959a8f 100644 --- a/quickstep/src/com/android/quickstep/interaction/GestureSandboxActivity.java +++ b/quickstep/src/com/android/quickstep/interaction/GestureSandboxActivity.java @@ -41,6 +41,7 @@ import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.logging.StatsLogManager; import com.android.quickstep.TouchInteractionService.TISBinder; import com.android.quickstep.interaction.TutorialController.TutorialType; +import com.android.quickstep.util.LayoutUtils; import com.android.quickstep.util.TISBindHelper; import java.util.ArrayList; @@ -54,8 +55,6 @@ public class GestureSandboxActivity extends FragmentActivity { static final String KEY_TUTORIAL_TYPE = "tutorial_type"; static final String KEY_GESTURE_COMPLETE = "gesture_complete"; static final String KEY_USE_TUTORIAL_MENU = "use_tutorial_menu"; - public static final double SQUARE_ASPECT_RATIO_BOTTOM_BOUND = 0.95; - public static final double SQUARE_ASPECT_RATIO_UPPER_BOUND = 1.05; @Nullable private TutorialType[] mTutorialSteps; private GestureSandboxFragment mCurrentFragment; @@ -170,10 +169,7 @@ public class GestureSandboxActivity extends FragmentActivity { getApplicationContext()).getDeviceProfile(this); if (deviceProfile.isTablet) { // The tutorial will work in either orientation if the height and width are similar - boolean isAspectRatioSquare = - deviceProfile.aspectRatio > SQUARE_ASPECT_RATIO_BOTTOM_BOUND - && deviceProfile.aspectRatio < SQUARE_ASPECT_RATIO_UPPER_BOUND; - boolean showRotationPrompt = !isAspectRatioSquare + boolean showRotationPrompt = !LayoutUtils.isAspectRatioSquare(deviceProfile.aspectRatio) && getResources().getConfiguration().orientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; diff --git a/quickstep/src/com/android/quickstep/util/LayoutUtils.java b/quickstep/src/com/android/quickstep/util/LayoutUtils.java index ec1eeb1d6b..b9338a32ac 100644 --- a/quickstep/src/com/android/quickstep/util/LayoutUtils.java +++ b/quickstep/src/com/android/quickstep/util/LayoutUtils.java @@ -28,6 +28,8 @@ import com.android.quickstep.orientation.RecentsPagedOrientationHandler; public class LayoutUtils { + private static final float SQUARE_ASPECT_RATIO_TOLERANCE = 0.05f; + /** * The height for the swipe up motion */ @@ -61,4 +63,13 @@ public class LayoutUtils { } } } + + /** + * Returns true iff the device's aspect ratio is within + * {@link LayoutUtils#SQUARE_ASPECT_RATIO_TOLERANCE} of 1:1 + */ + public static boolean isAspectRatioSquare(float aspectRatio) { + return Float.compare(aspectRatio, 1f - SQUARE_ASPECT_RATIO_TOLERANCE) >= 0 + && Float.compare(aspectRatio, 1f + SQUARE_ASPECT_RATIO_TOLERANCE) <= 0; + } }