Merge "Create a demo of Glance text component styles" into androidx-main
diff --git a/glance/glance-appwidget/integration-tests/demos/src/main/AndroidManifest.xml b/glance/glance-appwidget/integration-tests/demos/src/main/AndroidManifest.xml
index 0e11321..9107a59 100644
--- a/glance/glance-appwidget/integration-tests/demos/src/main/AndroidManifest.xml
+++ b/glance/glance-appwidget/integration-tests/demos/src/main/AndroidManifest.xml
@@ -139,6 +139,19 @@
</receiver>
<receiver
+ android:name="androidx.glance.appwidget.demos.TypographyDemoAppWidgetReceiver"
+ android:label="@string/typography_widget_name"
+ android:enabled="@bool/glance_appwidget_available"
+ android:exported="false">
+ <intent-filter>
+ <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
+ </intent-filter>
+ <meta-data
+ android:name="android.appwidget.provider"
+ android:resource="@xml/default_app_widget_info" />
+ </receiver>
+
+ <receiver
android:name="androidx.glance.appwidget.demos.ScrollableAppWidgetReceiver"
android:label="@string/scrollable_widget_name"
android:enabled="@bool/glance_appwidget_available"
diff --git a/glance/glance-appwidget/integration-tests/demos/src/main/java/androidx/glance/appwidget/demos/TypogryaphDemoAppWidget.kt b/glance/glance-appwidget/integration-tests/demos/src/main/java/androidx/glance/appwidget/demos/TypogryaphDemoAppWidget.kt
new file mode 100644
index 0000000..dee09c1
--- /dev/null
+++ b/glance/glance-appwidget/integration-tests/demos/src/main/java/androidx/glance/appwidget/demos/TypogryaphDemoAppWidget.kt
@@ -0,0 +1,154 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.glance.appwidget.demos
+
+import android.content.Context
+import androidx.compose.ui.unit.dp
+import androidx.compose.ui.unit.sp
+import androidx.glance.GlanceId
+import androidx.glance.GlanceModifier
+import androidx.glance.GlanceTheme
+import androidx.glance.appwidget.GlanceAppWidget
+import androidx.glance.appwidget.GlanceAppWidgetReceiver
+import androidx.glance.appwidget.SizeMode
+import androidx.glance.appwidget.lazy.LazyColumn
+import androidx.glance.appwidget.provideContent
+import androidx.glance.background
+import androidx.glance.layout.Column
+import androidx.glance.layout.Spacer
+import androidx.glance.layout.fillMaxSize
+import androidx.glance.layout.fillMaxWidth
+import androidx.glance.layout.padding
+import androidx.glance.layout.size
+import androidx.glance.layout.wrapContentHeight
+import androidx.glance.text.FontFamily
+import androidx.glance.text.FontWeight
+import androidx.glance.text.Text
+import androidx.glance.text.TextAlign
+import androidx.glance.text.TextStyle
+
+/**
+ * Sample AppWidget showcases Glance text styles.
+ */
+class TypographyDemoAppWidget : GlanceAppWidget() {
+ override val sizeMode: SizeMode = SizeMode.Exact
+
+ override suspend fun provideGlance(
+ context: Context,
+ id: GlanceId
+ ) = provideContent {
+ Column(
+ modifier = GlanceModifier.fillMaxSize()
+ .background(GlanceTheme.colors.background).padding(8.dp)
+ ) {
+ Column {
+ Text(
+ "Text Component Demo Widget",
+ modifier = GlanceModifier.fillMaxWidth().wrapContentHeight(),
+ style = TextStyle(
+ fontWeight = FontWeight.Bold,
+ fontSize = 24.sp,
+ textAlign = TextAlign.Center
+ )
+ )
+ Spacer(GlanceModifier.size(16.dp))
+ Text(
+ "Glance text styles:",
+ style = TextStyle(fontSize = 18.sp)
+ )
+ Spacer(GlanceModifier.size(20.dp))
+ }
+
+ LazyColumn {
+ item {
+ Text(
+ "Display Large",
+ style = TextStyle(
+ fontSize = 57.sp,
+ fontWeight = FontWeight.Normal,
+ fontFamily = FontFamily.SansSerif
+ )
+ )
+ }
+ item {
+ Text(
+ "Headline Large",
+ style = TextStyle(
+ fontSize = 32.sp,
+ fontWeight = FontWeight.Normal,
+ fontFamily = FontFamily.SansSerif
+ )
+ )
+ }
+ item {
+ Text(
+ "Headline Small",
+ style = TextStyle(
+ fontSize = 24.sp,
+ fontWeight = FontWeight.Normal,
+ fontFamily = FontFamily.SansSerif
+ )
+ )
+ }
+ item {
+ Text(
+ "Title Medium",
+ style = TextStyle(
+ fontSize = 16.sp,
+ fontWeight = FontWeight.Medium,
+ fontFamily = FontFamily.SansSerif
+ )
+ )
+ }
+ item {
+ Text(
+ "Body Medium",
+ style = TextStyle(
+ fontSize = 14.sp,
+ fontWeight = FontWeight.Normal,
+ fontFamily = FontFamily.SansSerif
+ )
+ )
+ }
+ item {
+ Text(
+ "Label Large",
+ style = TextStyle(
+ fontSize = 14.sp,
+ fontWeight = FontWeight.Medium,
+ fontFamily = FontFamily.SansSerif
+ )
+ )
+ }
+ item {
+ Text(
+ "Label Medium",
+ style = TextStyle(
+ fontSize = 12.sp,
+ fontWeight = FontWeight.Medium,
+ fontFamily = FontFamily.SansSerif
+ )
+ )
+ }
+ }
+ }
+ }
+}
+
+class TypographyDemoAppWidgetReceiver : GlanceAppWidgetReceiver() {
+ override val glanceAppWidget: GlanceAppWidget = TypographyDemoAppWidget()
+}
diff --git a/glance/glance-appwidget/integration-tests/demos/src/main/res/values/strings.xml b/glance/glance-appwidget/integration-tests/demos/src/main/res/values/strings.xml
index 638118d..e74682e 100644
--- a/glance/glance-appwidget/integration-tests/demos/src/main/res/values/strings.xml
+++ b/glance/glance-appwidget/integration-tests/demos/src/main/res/values/strings.xml
@@ -28,6 +28,7 @@
<string name="compound_button_widget_name">Compound buttons Widget</string>
<string name="error_widget_name">Error UI Widget</string>
<string name="font_widget_name">Font Demo Widget</string>
+ <string name="typography_widget_name">Typography Demo Widget</string>
<string name="scrollable_widget_name">Scrollable Widget</string>
<string name="image_widget_name">Image Widget</string>
<string name="ripple_widget_name">Ripple Widget</string>