Skip to content

Commit bd170b9

Browse files
secondsunSummers Pittman
andauthored
Adding Glance Inner Radius Snipper (#465)
Co-authored-by: Summers Pittman <[email protected]>
1 parent 1faccf5 commit bd170b9

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

compose/snippets/src/main/java/com/example/compose/snippets/glance/GlanceSnippets.kt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import androidx.compose.runtime.remember
3939
import androidx.compose.runtime.rememberCoroutineScope
4040
import androidx.compose.runtime.setValue
4141
import androidx.compose.ui.graphics.Color
42+
import androidx.compose.ui.unit.Dp
4243
import androidx.compose.ui.unit.DpSize
4344
import androidx.compose.ui.unit.dp
4445
import androidx.glance.Button
@@ -69,6 +70,7 @@ import androidx.glance.appwidget.action.ActionCallback
6970
import androidx.glance.appwidget.action.actionRunCallback
7071
import androidx.glance.appwidget.action.actionSendBroadcast
7172
import androidx.glance.appwidget.action.actionStartService
73+
import androidx.glance.appwidget.cornerRadius
7274
import androidx.glance.appwidget.provideContent
7375
import androidx.glance.appwidget.updateAll
7476
import 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+
871899
object GlanceInteroperability {
872900
@Composable
873901
fun example01() {

0 commit comments

Comments
 (0)