Merge "Fix triggering One-handed mode introduces gesture conflict issues (2/n)"

This commit is contained in:
Jason Chang 2021-01-10 03:38:37 +00:00 committed by Android (Google) Code Review
commit cfbfea9172
3 changed files with 28 additions and 4 deletions

View File

@ -66,6 +66,7 @@ class OrientationTouchTransformer {
private final RectF mOneHandedModeRegion = new RectF(); private final RectF mOneHandedModeRegion = new RectF();
private int mCurrentDisplayRotation; private int mCurrentDisplayRotation;
private int mNavBarGesturalHeight; private int mNavBarGesturalHeight;
private int mNavBarLargerGesturalHeight;
private boolean mEnableMultipleRegions; private boolean mEnableMultipleRegions;
private Resources mResources; private Resources mResources;
private OrientationRectF mLastRectTouched; private OrientationRectF mLastRectTouched;
@ -106,6 +107,9 @@ class OrientationTouchTransformer {
mMode = mode; mMode = mode;
mContractInfo = contractInfo; mContractInfo = contractInfo;
mNavBarGesturalHeight = getNavbarSize(ResourceUtils.NAVBAR_BOTTOM_GESTURE_SIZE); mNavBarGesturalHeight = getNavbarSize(ResourceUtils.NAVBAR_BOTTOM_GESTURE_SIZE);
mNavBarLargerGesturalHeight = ResourceUtils.getDimenByName(
ResourceUtils.NAVBAR_BOTTOM_GESTURE_LARGER_SIZE, resources,
mNavBarGesturalHeight);
} }
private void refreshTouchRegion(Info info, Resources newRes) { private void refreshTouchRegion(Info info, Resources newRes) {
@ -234,6 +238,7 @@ class OrientationTouchTransformer {
Point size = display.realSize; Point size = display.realSize;
int rotation = display.rotation; int rotation = display.rotation;
int touchHeight = mNavBarGesturalHeight; int touchHeight = mNavBarGesturalHeight;
int largerGesturalHeight = mNavBarLargerGesturalHeight;
OrientationRectF orientationRectF = OrientationRectF orientationRectF =
new OrientationRectF(0, 0, size.x, size.y, rotation); new OrientationRectF(0, 0, size.x, size.y, rotation);
if (mMode == SysUINavigationMode.Mode.NO_BUTTON) { if (mMode == SysUINavigationMode.Mode.NO_BUTTON) {
@ -256,7 +261,8 @@ class OrientationTouchTransformer {
} }
} }
// One handed gestural only active on portrait mode // One handed gestural only active on portrait mode
mOneHandedModeRegion.set(0, orientationRectF.bottom - touchHeight, size.x, size.y); mOneHandedModeRegion.set(0, orientationRectF.bottom - mNavBarLargerGesturalHeight,
size.x, size.y);
return orientationRectF; return orientationRectF;
} }
@ -378,6 +384,7 @@ class OrientationTouchTransformer {
} }
pw.println(regions.toString()); pw.println(regions.toString());
pw.println(" mNavBarGesturalHeight=" + mNavBarGesturalHeight); pw.println(" mNavBarGesturalHeight=" + mNavBarGesturalHeight);
pw.println(" mNavBarLargerGesturalHeight=" + mNavBarLargerGesturalHeight);
pw.println(" mOneHandedModeRegion=" + mOneHandedModeRegion); pw.println(" mOneHandedModeRegion=" + mOneHandedModeRegion);
} }

View File

@ -73,6 +73,7 @@ public class SysUINavigationMode {
private Mode mMode; private Mode mMode;
private int mNavBarGesturalHeight; private int mNavBarGesturalHeight;
private int mNavBarLargerGesturalHeight;
private final List<NavigationModeChangeListener> mChangeListeners = new ArrayList<>(); private final List<NavigationModeChangeListener> mChangeListeners = new ArrayList<>();
private final List<OneHandedModeChangeListener> mOneHandedOverlayChangeListeners = private final List<OneHandedModeChangeListener> mOneHandedOverlayChangeListeners =
@ -112,6 +113,17 @@ public class SysUINavigationMode {
if (mNavBarGesturalHeight != newGesturalHeight) { if (mNavBarGesturalHeight != newGesturalHeight) {
mNavBarGesturalHeight = newGesturalHeight; mNavBarGesturalHeight = newGesturalHeight;
}
int newLargerGesturalHeight = ResourceUtils.getDimenByName(
ResourceUtils.NAVBAR_BOTTOM_GESTURE_LARGER_SIZE, mContext.getResources(),
INVALID_RESOURCE_HANDLE);
if (newLargerGesturalHeight == INVALID_RESOURCE_HANDLE) {
Log.e(TAG, "Failed to get system resource ID. Incompatible framework version?");
return;
}
if (mNavBarLargerGesturalHeight != newLargerGesturalHeight) {
mNavBarLargerGesturalHeight = newLargerGesturalHeight;
dispatchOneHandedOverlayChange(); dispatchOneHandedOverlayChange();
} }
} }
@ -122,6 +134,9 @@ public class SysUINavigationMode {
mNavBarGesturalHeight = ResourceUtils.getDimenByName( mNavBarGesturalHeight = ResourceUtils.getDimenByName(
ResourceUtils.NAVBAR_BOTTOM_GESTURE_SIZE, mContext.getResources(), ResourceUtils.NAVBAR_BOTTOM_GESTURE_SIZE, mContext.getResources(),
INVALID_RESOURCE_HANDLE); INVALID_RESOURCE_HANDLE);
mNavBarLargerGesturalHeight = ResourceUtils.getDimenByName(
ResourceUtils.NAVBAR_BOTTOM_GESTURE_LARGER_SIZE, mContext.getResources(),
mNavBarGesturalHeight);
if (modeInt == INVALID_RESOURCE_HANDLE) { if (modeInt == INVALID_RESOURCE_HANDLE) {
Log.e(TAG, "Failed to get system resource ID. Incompatible framework version?"); Log.e(TAG, "Failed to get system resource ID. Incompatible framework version?");
@ -143,7 +158,7 @@ public class SysUINavigationMode {
private void dispatchOneHandedOverlayChange() { private void dispatchOneHandedOverlayChange() {
for (OneHandedModeChangeListener listener : mOneHandedOverlayChangeListeners) { for (OneHandedModeChangeListener listener : mOneHandedOverlayChangeListeners) {
listener.onOneHandedModeChanged(mNavBarGesturalHeight); listener.onOneHandedModeChanged(mNavBarLargerGesturalHeight);
} }
} }
@ -158,7 +173,7 @@ public class SysUINavigationMode {
public int addOneHandedOverlayChangeListener(OneHandedModeChangeListener listener) { public int addOneHandedOverlayChangeListener(OneHandedModeChangeListener listener) {
mOneHandedOverlayChangeListeners.add(listener); mOneHandedOverlayChangeListeners.add(listener);
return mNavBarGesturalHeight; return mNavBarLargerGesturalHeight;
} }
public void removeOneHandedOverlayChangeListener(OneHandedModeChangeListener listener) { public void removeOneHandedOverlayChangeListener(OneHandedModeChangeListener listener) {
@ -182,4 +197,4 @@ public class SysUINavigationMode {
public interface OneHandedModeChangeListener { public interface OneHandedModeChangeListener {
void onOneHandedModeChanged(int newGesturalHeight); void onOneHandedModeChanged(int newGesturalHeight);
} }
} }

View File

@ -25,6 +25,8 @@ public class ResourceUtils {
public static final int INVALID_RESOURCE_HANDLE = -1; 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_LANDSCAPE_LEFT_RIGHT_SIZE = "navigation_bar_width";
public static final String NAVBAR_BOTTOM_GESTURE_SIZE = "navigation_bar_gesture_height"; public static final String NAVBAR_BOTTOM_GESTURE_SIZE = "navigation_bar_gesture_height";
public static final String NAVBAR_BOTTOM_GESTURE_LARGER_SIZE =
"navigation_bar_gesture_larger_height";
public static int getNavbarSize(String resName, Resources res) { public static int getNavbarSize(String resName, Resources res) {
return getDimenByName(resName, res, DEFAULT_NAVBAR_VALUE); return getDimenByName(resName, res, DEFAULT_NAVBAR_VALUE);