import android.os.Bundle import android.view.View import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.size import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.unit.dp import androidx.compose.ui.viewinterop.AndroidView import com.example.composeshadowdemo.ui.theme.ComposeShadowDemoTheme class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { ComposeShadowDemoTheme { SoftwareLayerComposable { Box(modifier = Modifier.fillMaxSize()) { Box( modifier = Modifier .align(Alignment.Center) .size(100.dp) .drawColoredShadow(color = Color.White, shadowColor = Color.Red, borderRadius = 20.dp) ) { Text(text = "123", modifier = Modifier.align(Alignment.Center)) } } } } } } } @Composable fun SoftwareLayerComposable( modifier: Modifier = Modifier, content: @Composable () -> Unit, ) { AndroidView( factory = { context -> ComposeView(context).apply { setLayerType(View.LAYER_TYPE_SOFTWARE, null) } }, update = { composeView -> composeView.setContent(content) }, modifier = modifier, ) }