From 79975d146efbf98056eeba0c1c3222aa2de651db Mon Sep 17 00:00:00 2001 From: Pieter De Baets Date: Tue, 1 Feb 2022 10:56:48 -0800 Subject: [PATCH] Fix display metric used for scrollview snapping Summary: Similarly to D29864944 (https://github.com/facebook/react-native/commit/6d4fff2e5ccaffb6b0255a139f2ae8e009278948) we want to use `getWindowDisplayMetrics` instead of `getScreenDisplayMetrics`. Changelog: [Internal] Reviewed By: mdvacca Differential Revision: D33916223 fbshipit-source-id: cae07b1f0c1498745f28d0b9f860edcc55bde5ed --- .../views/scroll/ReactHorizontalScrollViewManager.java | 10 ++++------ .../react/views/scroll/ReactScrollViewManager.java | 10 ++++------ 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java index ddd60f19ac0..6d4bd242dd2 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java @@ -8,13 +8,11 @@ package com.facebook.react.views.scroll; import android.graphics.Color; -import android.util.DisplayMetrics; import androidx.annotation.Nullable; import androidx.core.view.ViewCompat; import com.facebook.react.bridge.ReadableArray; import com.facebook.react.bridge.ReadableMap; import com.facebook.react.module.annotations.ReactModule; -import com.facebook.react.uimanager.DisplayMetricsHolder; import com.facebook.react.uimanager.PixelUtil; import com.facebook.react.uimanager.PointerEvents; import com.facebook.react.uimanager.ReactClippingViewGroupHelper; @@ -99,8 +97,8 @@ public class ReactHorizontalScrollViewManager extends ViewGroupManager offsets = new ArrayList(); for (int i = 0; i < snapToOffsets.size(); i++) { - offsets.add((int) (snapToOffsets.getDouble(i) * screenDisplayMetrics.density)); + offsets.add((int) (snapToOffsets.getDouble(i) * density)); } view.setSnapOffsets(offsets); } diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java index 49524684589..8a3623444be 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java @@ -8,7 +8,6 @@ package com.facebook.react.views.scroll; import android.graphics.Color; -import android.util.DisplayMetrics; import android.view.View; import androidx.annotation.Nullable; import androidx.core.view.ViewCompat; @@ -17,7 +16,6 @@ import com.facebook.react.bridge.ReadableMap; import com.facebook.react.bridge.RetryableMountingLayerException; import com.facebook.react.common.MapBuilder; import com.facebook.react.module.annotations.ReactModule; -import com.facebook.react.uimanager.DisplayMetricsHolder; import com.facebook.react.uimanager.PixelUtil; import com.facebook.react.uimanager.PointerEvents; import com.facebook.react.uimanager.ReactClippingViewGroupHelper; @@ -98,8 +96,8 @@ public class ReactScrollViewManager extends ViewGroupManager @ReactProp(name = "snapToInterval") public void setSnapToInterval(ReactScrollView view, float snapToInterval) { // snapToInterval needs to be exposed as a float because of the Javascript interface. - DisplayMetrics screenDisplayMetrics = DisplayMetricsHolder.getScreenDisplayMetrics(); - view.setSnapInterval((int) (snapToInterval * screenDisplayMetrics.density)); + float density = PixelUtil.getDisplayMetricDensity(); + view.setSnapInterval((int) (snapToInterval * density)); } @ReactProp(name = "snapToOffsets") @@ -109,10 +107,10 @@ public class ReactScrollViewManager extends ViewGroupManager return; } - DisplayMetrics screenDisplayMetrics = DisplayMetricsHolder.getScreenDisplayMetrics(); + float density = PixelUtil.getDisplayMetricDensity(); List offsets = new ArrayList(); for (int i = 0; i < snapToOffsets.size(); i++) { - offsets.add((int) (snapToOffsets.getDouble(i) * screenDisplayMetrics.density)); + offsets.add((int) (snapToOffsets.getDouble(i) * density)); } view.setSnapOffsets(offsets); }