-
Notifications
You must be signed in to change notification settings - Fork 60
/
SizeExactWidget.kt
53 lines (45 loc) · 1.89 KB
/
SizeExactWidget.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package com.husaynhakeem.glancesample.widget.size
import androidx.compose.runtime.Composable
import androidx.compose.ui.unit.dp
import androidx.glance.GlanceModifier
import androidx.glance.LocalSize
import androidx.glance.appwidget.GlanceAppWidget
import androidx.glance.appwidget.GlanceAppWidgetReceiver
import androidx.glance.appwidget.SizeMode
import androidx.glance.layout.Alignment
import androidx.glance.layout.Column
import androidx.glance.layout.fillMaxSize
import androidx.glance.layout.padding
import androidx.glance.text.Text
import androidx.glance.text.TextDecoration
import androidx.glance.text.TextStyle
import com.husaynhakeem.glancesample.util.log
import com.husaynhakeem.glancesample.util.readable
/**
* [SizeMode.Exact] causes the widget's UI to be refreshed every time its size changes, i.e every
* time the user resizes it. This can result in not-so-great transitions between sizes if the UI
* changes as well as buggy performance.
*/
class SizeExactWidget : GlanceAppWidget() {
override val sizeMode: SizeMode = SizeMode.Exact
@Composable
override fun Content() {
// Once you select this widget from the widgets selector, this should be called
// immediately. This is also called every time the widget is resized.
log("Size mode exact content invoked")
Column(
modifier = GlanceModifier
.fillMaxSize()
.padding(8.dp),
verticalAlignment = Alignment.CenterVertically,
horizontalAlignment = Alignment.CenterHorizontally,
) {
Text(text = "Exact", style = TextStyle(textDecoration = TextDecoration.Underline))
val size = LocalSize.current
Text(text = "${size.width.readable()} x ${size.height.readable()}")
}
}
}
class SizeExactWidgetReceiver : GlanceAppWidgetReceiver() {
override val glanceAppWidget: GlanceAppWidget = SizeExactWidget()
}