Update state and touch region after one handed overlay changed
The matrix for overall modes x state changes:
-----------------------------------------------------
Mode | State changed | *Before|*After
-----------------------------------------------------
OneHanded | Portrait->Landscape | 80dp | 32dp
OneHanded | Landscape->Portrait | 32dp | 80dp
-----------------------------------------------------
OneHanded | Disable->Enable | 32dp | 32dp
(Landscape)| Enable->Disable | 32dp | 32dp
-----------------------------------------------------
OneHanded | Disable->Enable | 32dp | 80dp
(Portrait) | Enable->Disable | 80dp | 32dp
-----------------------------------------------------
NO_BUTTON | Portrait->Landscape | 32dp | 32dp
NO_BUTTON | Landscape->Portrait | 32dp | 32dp
2 BUTTON | Portrait->Landscape | 48dp | 48dp
2 BUTTON | Landscape->Portrait | 48dp | 48dp
3 BUTTON | Portrait->Landscape | 48dp | 48dp
3 BUTTON | Landscape->Portrait | 48dp | 48dp
-----------------------------------------------------
* dimen : navigation_bar_gesture_height
Test: adb bugrepot | grep mOneHandedModeRegion
Test: manually triger one handed
Test: atest WindowInsetsBehaviorTests
Test: atest com.android.launcher3.memory.MemoryTests
Test: flake -once
Test: rnlot -t com.android.launcher3.memory.MemoryTests
Bug: 157958539
Bug: 159183864
Change-Id: I19755938c3c93eb59a9f621af5722f5679c1da14
diff --git a/src/com/android/launcher3/ResourceUtils.java b/src/com/android/launcher3/ResourceUtils.java
index 403d779..c9fb75a 100644
--- a/src/com/android/launcher3/ResourceUtils.java
+++ b/src/com/android/launcher3/ResourceUtils.java
@@ -22,6 +22,7 @@
public class ResourceUtils {
public static final int DEFAULT_NAVBAR_VALUE = 48;
+ public static final int INVALID_RESOURCE_HANDLE = -1;
public static final String NAVBAR_LANDSCAPE_LEFT_RIGHT_SIZE = "navigation_bar_width";
public static final String NAVBAR_BOTTOM_GESTURE_SIZE = "navigation_bar_gesture_height";
@@ -51,7 +52,13 @@
return val;
}
+ public static int getIntegerByName(String resName, Resources res, int defaultValue) {
+ int resId = res.getIdentifier(resName, "integer", "android");
+ return resId != 0 ? res.getInteger(resId) : defaultValue;
+ }
+
public static int pxFromDp(float size, DisplayMetrics metrics) {
- return Math.round(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, size, metrics));
+ return size < 0 ? INVALID_RESOURCE_HANDLE : Math.round(
+ TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, size, metrics));
}
}