diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/InsetBoxShadowDrawable.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/InsetBoxShadowDrawable.kt index 44d0cbe4000..f29f148efdb 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/InsetBoxShadowDrawable.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/InsetBoxShadowDrawable.kt @@ -14,6 +14,7 @@ import android.graphics.Color import android.graphics.ColorFilter import android.graphics.Paint import android.graphics.Path +import android.graphics.PixelFormat import android.graphics.RectF import android.graphics.drawable.Drawable import androidx.annotation.RequiresApi @@ -84,8 +85,11 @@ internal class InsetBoxShadowDrawable( invalidateSelf() } - override fun getOpacity(): Int = - ((shadowPaint.alpha / 255f) / (Color.alpha(shadowColor) / 255f) * 255f).roundToInt() + override fun getOpacity(): Int { + val alpha = Color.alpha(shadowColor) + return if (alpha == 0) PixelFormat.TRANSPARENT + else ((shadowPaint.alpha / 255f) / (alpha / 255f) * 255f).roundToInt() + } override fun draw(canvas: Canvas) { val computedBorderRadii = computeBorderRadii() diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/OutsetBoxShadowDrawable.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/OutsetBoxShadowDrawable.kt index 2bbb82f2b2f..9df839902af 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/OutsetBoxShadowDrawable.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/OutsetBoxShadowDrawable.kt @@ -14,6 +14,7 @@ import android.graphics.Color import android.graphics.ColorFilter import android.graphics.Paint import android.graphics.Path +import android.graphics.PixelFormat import android.graphics.RectF import android.graphics.drawable.Drawable import androidx.annotation.RequiresApi @@ -72,8 +73,11 @@ internal class OutsetBoxShadowDrawable( invalidateSelf() } - override fun getOpacity(): Int = - ((shadowPaint.alpha / 255f) / (Color.alpha(shadowColor) / 255f) * 255f).roundToInt() + override fun getOpacity(): Int { + val alpha = Color.alpha(shadowColor) + return if (alpha == 0) PixelFormat.TRANSPARENT + else ((shadowPaint.alpha / 255f) / (alpha / 255f) * 255f).roundToInt() + } override fun draw(canvas: Canvas) { val resolutionWidth = bounds.width().toFloat().pxToDp() diff --git a/packages/rn-tester/js/examples/View/ViewExample.js b/packages/rn-tester/js/examples/View/ViewExample.js index e93732f2162..d63c74ccc0c 100644 --- a/packages/rn-tester/js/examples/View/ViewExample.js +++ b/packages/rn-tester/js/examples/View/ViewExample.js @@ -528,6 +528,13 @@ function BoxShadowExample(): React.Node { boxShadow: '0px 10px', }} /> + );