Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GoogleI/O2024 LT報告会資料

GoogleI/O2024 LT報告会資料

shinsuke-fujita

June 17, 2024
Tweet

More Decks by shinsuke-fujita

Other Decks in Programming

Transcript

  1. Jetpack Glanceの歴史 バージョン リリース⽇ 1.0.0-alpha01 2021/12/15 1.0.0-beta01 2023/03/10 1.0.0-rc01 2023/07/26

    1.0.0 2023/09/06 1.1.0-alpha01 2024/02/07 1.1.0-beta01 2024/04/03 1.1.0-rc01 2024/05/14
  2. Jetpack Glanceでウィジェット作る 1. setup Glanceの依存関係を追加(Compose Compilerも有効にします) dependencies { // For

    AppWidgets support implementation( "androidx.glance:glance-appwidget:1.0.0" ) // For interop APIs with Material 2 implementation( "androidx.glance:glance-material:1.0.0" ) // For interop APIs with Material 3 implementation( "androidx.glance:glance-material3:1.0.0" ) }
  3. Jetpack Glanceでウィジェット作る 2. AppWidgetをManifestで宣⾔する 2-1. AppWidgetをManifestで宣⾔する <receiver android:name=".glance.GlanceReceiver" android:exported="true"> <intent-filter>

    <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/my_app_widget_info" /> </receiver>
  4. Jetpack Glanceでウィジェット作る 4. GlanceAppWidgetを定義する class MyAppWidget : GlanceAppWidget() { override

    suspend fun provideGlance(context: Context, id: GlanceId) { provideContent { // create your AppWidget here GlanceTheme { GlanceContent() } } } }
  5. Jetpack Glanceでウィジェット作る 5. UIを作成する(Glance⽤のComposableを使う) @Composable private fun GlanceContent() { Column(

    modifier = GlanceModifier.fillMaxSize().background(GlanceTheme.colors.background), verticalAlignment = Alignment.Top, horizontalAlignment = Alignment.CenterHorizontally ) { Text(text = "Where to?", modifier = GlanceModifier.padding(12.dp)) Row(horizontalAlignment = Alignment.CenterHorizontally) { Button(text = "Home", onClick = actionStartActivity<MainActivity>()) Button(text = "Work", onClick = actionStartActivity<MainActivity>()) } } }
  6. ユーザー操作を処理する u Activity起動+アクションパラメータの例 @Composable fun MyContent() { // .. Button(

    text = "Go Home", onClick = actionStartActivity<MainActivity>( actionParameterOf(key to “parameter”) ) ) }