@@ -69,6 +69,7 @@ import androidx.glance.appwidget.action.ActionCallback
6969import androidx.glance.appwidget.action.actionRunCallback
7070import androidx.glance.appwidget.action.actionSendBroadcast
7171import androidx.glance.appwidget.action.actionStartService
72+ import androidx.glance.appwidget.cornerRadius
7273import androidx.glance.appwidget.provideContent
7374import androidx.glance.appwidget.updateAll
7475import androidx.glance.appwidget.updateIf
@@ -89,6 +90,7 @@ import com.example.compose.snippets.MyActivity
8990import com.example.compose.snippets.R
9091import kotlinx.coroutines.flow.StateFlow
9192import kotlinx.coroutines.launch
93+ import androidx.compose.ui.unit.Dp
9294
9395lateinit var LightColors : ColorScheme
9496lateinit var DarkColors : ColorScheme
@@ -868,6 +870,34 @@ object GlanceTheming {
868870 }
869871}
870872
873+ object GlanceInnerPadding {
874+
875+ /* *
876+ * Applies corner radius for views that are visually positioned [widgetPadding]dp inside of the
877+ * widget background.
878+ */
879+ @Composable
880+ fun GlanceModifier.appWidgetInnerCornerRadius (): GlanceModifier {
881+ // [START android_compose_glance_innercornerradius]
882+ if (Build .VERSION .SDK_INT < 31 ) {
883+ return this
884+ }
885+
886+ // Padding around the widget
887+ val widgetPadding = 12 .dp
888+ val resources = LocalContext .current.resources
889+ // get dimension in float (without rounding).
890+ val px = resources.getDimension(android.R .dimen.system_app_widget_background_radius)
891+ val widgetBackgroundRadiusDpValue = px / resources.displayMetrics.density
892+ if (widgetBackgroundRadiusDpValue < widgetPadding.value) {
893+ return this
894+ }
895+ return this .cornerRadius(Dp (widgetBackgroundRadiusDpValue - widgetPadding.value))
896+ // [END android_compose_glance_innercornerradius]
897+ }
898+
899+ }
900+
871901object GlanceInteroperability {
872902 @Composable
873903 fun example01 () {
0 commit comments