mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Gate off % translate on Android Paper (#45946)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/45946 This code is forked on iOS, where we have been, as a policy, avoiding Paper-specific changes. This code is shared between renderers on Android, but it is confusing developer experience to have it work on Android Paper, to then fail on iOS unless it is on new arch. This change disables support on Android Paper for consistency. Changelog: [Android][Removed] - Gate off % translate on Android Paper Reviewed By: joevilches Differential Revision: D60970266 fbshipit-source-id: 5df73b948464f5093941528b0af2e694827a9460
This commit is contained in:
committed by
Facebook GitHub Bot
parent
620b1221fa
commit
0273123dde
@@ -5174,6 +5174,7 @@ public class com/facebook/react/uimanager/TransformHelper {
|
||||
public fun <init> ()V
|
||||
public static fun processTransform (Lcom/facebook/react/bridge/ReadableArray;[D)V
|
||||
public static fun processTransform (Lcom/facebook/react/bridge/ReadableArray;[DFFLcom/facebook/react/bridge/ReadableArray;)V
|
||||
public static fun processTransform (Lcom/facebook/react/bridge/ReadableArray;[DFFLcom/facebook/react/bridge/ReadableArray;Z)V
|
||||
}
|
||||
|
||||
public abstract interface class com/facebook/react/uimanager/UIBlock {
|
||||
|
||||
+4
-1
@@ -572,13 +572,16 @@ public abstract class BaseViewManager<T extends View, C extends LayoutShadowNode
|
||||
return;
|
||||
}
|
||||
|
||||
boolean allowPercentageResolution = ViewUtil.getUIManagerType(view) == UIManagerType.FABRIC;
|
||||
|
||||
sMatrixDecompositionContext.reset();
|
||||
TransformHelper.processTransform(
|
||||
transforms,
|
||||
sTransformDecompositionArray,
|
||||
PixelUtil.toDIPFromPixel(view.getWidth()),
|
||||
PixelUtil.toDIPFromPixel(view.getHeight()),
|
||||
transformOrigin);
|
||||
transformOrigin,
|
||||
allowPercentageResolution);
|
||||
MatrixMathHelper.decomposeMatrix(sTransformDecompositionArray, sMatrixDecompositionContext);
|
||||
view.setTranslationX(
|
||||
PixelUtil.toPixelFromDIP(
|
||||
|
||||
+41
-12
@@ -45,8 +45,27 @@ public class TransformHelper {
|
||||
return inRadians ? value : MatrixMathHelper.degreesToRadians(value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Use {@link #processTransform(ReadableArray, double[], float, float, ReadableArray,
|
||||
* boolean)} instead.
|
||||
*/
|
||||
@Deprecated(forRemoval = true, since = "0.75")
|
||||
public static void processTransform(ReadableArray transforms, double[] result) {
|
||||
processTransform(transforms, result, 0, 0, null);
|
||||
processTransform(transforms, result, 0, 0, null, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Use {@link #processTransform(ReadableArray, double[], float, float, ReadableArray,
|
||||
* boolean)} instead.
|
||||
*/
|
||||
@Deprecated(forRemoval = true, since = "0.75")
|
||||
public static void processTransform(
|
||||
ReadableArray transforms,
|
||||
double[] result,
|
||||
float viewWidth,
|
||||
float viewHeight,
|
||||
ReadableArray transformOrigin) {
|
||||
processTransform(transforms, result, viewWidth, viewHeight, transformOrigin, false);
|
||||
}
|
||||
|
||||
public static void processTransform(
|
||||
@@ -54,10 +73,13 @@ public class TransformHelper {
|
||||
double[] result,
|
||||
float viewWidth,
|
||||
float viewHeight,
|
||||
ReadableArray transformOrigin) {
|
||||
ReadableArray transformOrigin,
|
||||
boolean allowPercentageResolution) {
|
||||
double[] helperMatrix = sHelperMatrix.get();
|
||||
MatrixMathHelper.resetIdentityMatrix(result);
|
||||
float[] offsets = getTranslateForTransformOrigin(viewWidth, viewHeight, transformOrigin);
|
||||
float[] offsets =
|
||||
getTranslateForTransformOrigin(
|
||||
viewWidth, viewHeight, transformOrigin, allowPercentageResolution);
|
||||
|
||||
if (offsets != null) {
|
||||
MatrixMathHelper.resetIdentityMatrix(helperMatrix);
|
||||
@@ -104,13 +126,13 @@ public class TransformHelper {
|
||||
} else if ("translate".equals(transformType)) {
|
||||
ReadableArray value = transform.getArray(transformType);
|
||||
double x = 0;
|
||||
if (value.getType(0) == ReadableType.String) {
|
||||
if (value.getType(0) == ReadableType.String && allowPercentageResolution) {
|
||||
x = parseTranslateValue(value.getString(0), viewWidth);
|
||||
} else {
|
||||
x = value.getDouble(0);
|
||||
}
|
||||
double y = 0;
|
||||
if (value.getType(1) == ReadableType.String) {
|
||||
if (value.getType(1) == ReadableType.String && allowPercentageResolution) {
|
||||
y = parseTranslateValue(value.getString(1), viewHeight);
|
||||
} else {
|
||||
y = value.getDouble(1);
|
||||
@@ -119,7 +141,8 @@ public class TransformHelper {
|
||||
MatrixMathHelper.applyTranslate3D(helperMatrix, x, y, z);
|
||||
} else if ("translateX".equals(transformType)) {
|
||||
double translateValue = 0;
|
||||
if (transform.getType(transformType) == ReadableType.String) {
|
||||
if (transform.getType(transformType) == ReadableType.String
|
||||
&& allowPercentageResolution) {
|
||||
translateValue = parseTranslateValue(transform.getString(transformType), viewWidth);
|
||||
} else {
|
||||
translateValue = transform.getDouble(transformType);
|
||||
@@ -127,7 +150,8 @@ public class TransformHelper {
|
||||
MatrixMathHelper.applyTranslate2D(helperMatrix, translateValue, 0d);
|
||||
} else if ("translateY".equals(transformType)) {
|
||||
double translateValue = 0;
|
||||
if (transform.getType(transformType) == ReadableType.String) {
|
||||
if (transform.getType(transformType) == ReadableType.String
|
||||
&& allowPercentageResolution) {
|
||||
translateValue = parseTranslateValue(transform.getString(transformType), viewHeight);
|
||||
} else {
|
||||
translateValue = transform.getDouble(transformType);
|
||||
@@ -167,7 +191,10 @@ public class TransformHelper {
|
||||
}
|
||||
|
||||
private static float[] getTranslateForTransformOrigin(
|
||||
float viewWidth, float viewHeight, ReadableArray transformOrigin) {
|
||||
float viewWidth,
|
||||
float viewHeight,
|
||||
ReadableArray transformOrigin,
|
||||
boolean allowPercentageResolution) {
|
||||
if (transformOrigin == null || (viewHeight == 0 && viewWidth == 0)) {
|
||||
return null;
|
||||
}
|
||||
@@ -183,10 +210,12 @@ public class TransformHelper {
|
||||
break;
|
||||
case String:
|
||||
{
|
||||
String part = transformOrigin.getString(i);
|
||||
if (part.endsWith("%")) {
|
||||
float val = Float.parseFloat(part.substring(0, part.length() - 1));
|
||||
origin[i] = (i == 0 ? viewWidth : viewHeight) * val / 100.0f;
|
||||
if (allowPercentageResolution) {
|
||||
String part = transformOrigin.getString(i);
|
||||
if (part.endsWith("%")) {
|
||||
float val = Float.parseFloat(part.substring(0, part.length() - 1));
|
||||
origin[i] = (i == 0 ? viewWidth : viewHeight) * val / 100.0f;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user