Skip to content

Commit 79975d1

Browse files
javachefacebook-github-bot
authored andcommitted
Fix display metric used for scrollview snapping
Summary: Similarly to D29864944 (6d4fff2) we want to use `getWindowDisplayMetrics` instead of `getScreenDisplayMetrics`. Changelog: [Internal] Reviewed By: mdvacca Differential Revision: D33916223 fbshipit-source-id: cae07b1f0c1498745f28d0b9f860edcc55bde5ed
1 parent 10199b1 commit 79975d1

File tree

2 files changed

+8
-12
lines changed

2 files changed

+8
-12
lines changed

ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,11 @@
88
package com.facebook.react.views.scroll;
99

1010
import android.graphics.Color;
11-
import android.util.DisplayMetrics;
1211
import androidx.annotation.Nullable;
1312
import androidx.core.view.ViewCompat;
1413
import com.facebook.react.bridge.ReadableArray;
1514
import com.facebook.react.bridge.ReadableMap;
1615
import com.facebook.react.module.annotations.ReactModule;
17-
import com.facebook.react.uimanager.DisplayMetricsHolder;
1816
import com.facebook.react.uimanager.PixelUtil;
1917
import com.facebook.react.uimanager.PointerEvents;
2018
import com.facebook.react.uimanager.ReactClippingViewGroupHelper;
@@ -99,8 +97,8 @@ public void setDisableIntervalMomentum(
9997
@ReactProp(name = "snapToInterval")
10098
public void setSnapToInterval(ReactHorizontalScrollView view, float snapToInterval) {
10199
// snapToInterval needs to be exposed as a float because of the Javascript interface.
102-
DisplayMetrics screenDisplayMetrics = DisplayMetricsHolder.getScreenDisplayMetrics();
103-
view.setSnapInterval((int) (snapToInterval * screenDisplayMetrics.density));
100+
float density = PixelUtil.getDisplayMetricDensity();
101+
view.setSnapInterval((int) (snapToInterval * density));
104102
}
105103

106104
@ReactProp(name = "snapToAlignment")
@@ -116,10 +114,10 @@ public void setSnapToOffsets(
116114
return;
117115
}
118116

119-
DisplayMetrics screenDisplayMetrics = DisplayMetricsHolder.getScreenDisplayMetrics();
117+
float density = PixelUtil.getDisplayMetricDensity();
120118
List<Integer> offsets = new ArrayList<Integer>();
121119
for (int i = 0; i < snapToOffsets.size(); i++) {
122-
offsets.add((int) (snapToOffsets.getDouble(i) * screenDisplayMetrics.density));
120+
offsets.add((int) (snapToOffsets.getDouble(i) * density));
123121
}
124122
view.setSnapOffsets(offsets);
125123
}

ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
package com.facebook.react.views.scroll;
99

1010
import android.graphics.Color;
11-
import android.util.DisplayMetrics;
1211
import android.view.View;
1312
import androidx.annotation.Nullable;
1413
import androidx.core.view.ViewCompat;
@@ -17,7 +16,6 @@
1716
import com.facebook.react.bridge.RetryableMountingLayerException;
1817
import com.facebook.react.common.MapBuilder;
1918
import com.facebook.react.module.annotations.ReactModule;
20-
import com.facebook.react.uimanager.DisplayMetricsHolder;
2119
import com.facebook.react.uimanager.PixelUtil;
2220
import com.facebook.react.uimanager.PointerEvents;
2321
import com.facebook.react.uimanager.ReactClippingViewGroupHelper;
@@ -98,8 +96,8 @@ public void setDisableIntervalMomentum(ReactScrollView view, boolean disbaleInte
9896
@ReactProp(name = "snapToInterval")
9997
public void setSnapToInterval(ReactScrollView view, float snapToInterval) {
10098
// snapToInterval needs to be exposed as a float because of the Javascript interface.
101-
DisplayMetrics screenDisplayMetrics = DisplayMetricsHolder.getScreenDisplayMetrics();
102-
view.setSnapInterval((int) (snapToInterval * screenDisplayMetrics.density));
99+
float density = PixelUtil.getDisplayMetricDensity();
100+
view.setSnapInterval((int) (snapToInterval * density));
103101
}
104102

105103
@ReactProp(name = "snapToOffsets")
@@ -109,10 +107,10 @@ public void setSnapToOffsets(ReactScrollView view, @Nullable ReadableArray snapT
109107
return;
110108
}
111109

112-
DisplayMetrics screenDisplayMetrics = DisplayMetricsHolder.getScreenDisplayMetrics();
110+
float density = PixelUtil.getDisplayMetricDensity();
113111
List<Integer> offsets = new ArrayList<Integer>();
114112
for (int i = 0; i < snapToOffsets.size(); i++) {
115-
offsets.add((int) (snapToOffsets.getDouble(i) * screenDisplayMetrics.density));
113+
offsets.add((int) (snapToOffsets.getDouble(i) * density));
116114
}
117115
view.setSnapOffsets(offsets);
118116
}

0 commit comments

Comments
 (0)