📱
Jetpack Glanceでのtips
Jetpack Glanceで色々気をつけることがあるのでメモ
※最適解とは限らない
1.stringResourcesは使えない
@Composable
fun glanceString(@StringRes id: Int): String {
return LocalContext.current.getString(id)
}
- backgroundに好きな色を指定できるわけではない
グラデーションやColor(0xFFffcce5)こういう色は反映されなかった
- widgetをタップしたらアプリを起動して欲しい
従来通りstartActivityでintentを渡してあげる
Intent(context, MainActivity::class.java).apply {
flags = FLAG_ACTIVITY_NEW_TASK
context.startActivity(this)
}
- Hiltはサポートされていない
暫定策としてApplicationクラスでRepositoryの具象化クラスを提供するServiceLocatorオブジェクトを用意する
@HiltAndroidApp
class App : Application() {
val repository: Repository by lazy { RepositoryImpl(this) }
}
object ServiceLocator {
fun provideRepository(context: Context): Repository {
return (context.applicationContext as App).repository
}
}
class Widget : GlanceAppWidget() {
override suspend fun provideGlance(context: Context, id: GlanceId) {
provideContent {
val repository = ServiceLocator.provideRepository(context)
}
}
Discussion