@@ -39,6 +39,7 @@ import androidx.compose.runtime.remember
39
39
import androidx.compose.runtime.rememberCoroutineScope
40
40
import androidx.compose.runtime.setValue
41
41
import androidx.compose.ui.graphics.Color
42
+ import androidx.compose.ui.unit.Dp
42
43
import androidx.compose.ui.unit.DpSize
43
44
import androidx.compose.ui.unit.dp
44
45
import androidx.glance.Button
@@ -69,6 +70,7 @@ import androidx.glance.appwidget.action.ActionCallback
69
70
import androidx.glance.appwidget.action.actionRunCallback
70
71
import androidx.glance.appwidget.action.actionSendBroadcast
71
72
import androidx.glance.appwidget.action.actionStartService
73
+ import androidx.glance.appwidget.cornerRadius
72
74
import androidx.glance.appwidget.provideContent
73
75
import androidx.glance.appwidget.updateAll
74
76
import androidx.glance.appwidget.updateIf
@@ -868,6 +870,32 @@ object GlanceTheming {
868
870
}
869
871
}
870
872
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
+
871
899
object GlanceInteroperability {
872
900
@Composable
873
901
fun example01 () {
0 commit comments