@@ -39,6 +39,7 @@ import androidx.compose.runtime.remember
3939import androidx.compose.runtime.rememberCoroutineScope
4040import androidx.compose.runtime.setValue
4141import androidx.compose.ui.graphics.Color
42+ import androidx.compose.ui.unit.Dp
4243import androidx.compose.ui.unit.DpSize
4344import androidx.compose.ui.unit.dp
4445import androidx.glance.Button
@@ -69,6 +70,7 @@ import androidx.glance.appwidget.action.ActionCallback
6970import androidx.glance.appwidget.action.actionRunCallback
7071import androidx.glance.appwidget.action.actionSendBroadcast
7172import androidx.glance.appwidget.action.actionStartService
73+ import androidx.glance.appwidget.cornerRadius
7274import androidx.glance.appwidget.provideContent
7375import androidx.glance.appwidget.updateAll
7476import androidx.glance.appwidget.updateIf
@@ -868,6 +870,32 @@ object GlanceTheming {
868870 }
869871}
870872
873+ object GlanceInnerPadding {
874+
875+ // [START android_compose_glance_innercornerradius]
876+ /* *
877+ * Applies corner radius for views that are visually positioned [widgetPadding]dp inside of the
878+ * widget background.
879+ */
880+ @Composable
881+ fun GlanceModifier.appWidgetInnerCornerRadius (widgetPadding : Dp ): GlanceModifier {
882+
883+ if (Build .VERSION .SDK_INT < 31 ) {
884+ return this
885+ }
886+
887+ val resources = LocalContext .current.resources
888+ // get dimension in float (without rounding).
889+ val px = resources.getDimension(android.R .dimen.system_app_widget_background_radius)
890+ val widgetBackgroundRadiusDpValue = px / resources.displayMetrics.density
891+ if (widgetBackgroundRadiusDpValue < widgetPadding.value) {
892+ return this
893+ }
894+ return this .cornerRadius(Dp (widgetBackgroundRadiusDpValue - widgetPadding.value))
895+ }
896+ // [END android_compose_glance_innercornerradius]
897+ }
898+
871899object GlanceInteroperability {
872900 @Composable
873901 fun example01 () {
0 commit comments