Skip to content

Commit 6187d01

Browse files
author
Summers Pittman
committed
Adding Glance Inner Radius Snipper
1 parent 1faccf5 commit 6187d01

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

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

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ import androidx.glance.appwidget.action.ActionCallback
6969
import androidx.glance.appwidget.action.actionRunCallback
7070
import androidx.glance.appwidget.action.actionSendBroadcast
7171
import androidx.glance.appwidget.action.actionStartService
72+
import androidx.glance.appwidget.cornerRadius
7273
import androidx.glance.appwidget.provideContent
7374
import androidx.glance.appwidget.updateAll
7475
import androidx.glance.appwidget.updateIf
@@ -89,6 +90,7 @@ import com.example.compose.snippets.MyActivity
8990
import com.example.compose.snippets.R
9091
import kotlinx.coroutines.flow.StateFlow
9192
import kotlinx.coroutines.launch
93+
import androidx.compose.ui.unit.Dp
9294

9395
lateinit var LightColors: ColorScheme
9496
lateinit 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+
871901
object GlanceInteroperability {
872902
@Composable
873903
fun example01() {

0 commit comments

Comments
 (0)