Migrer UI frå Views/ViewBinding til Jetpack Compose #14

Open
opened 2026-03-10 16:52:11 +01:00 by olemd · 0 comments
Owner

Bakgrunn

Appen brukar tradisjonelle Android Views med ViewBinding. Jetpack Compose er no den tilrådde UI-framtida for Android og gir betre tilstandshandtering, enklare lister, og komponent-førehandsvisning (@Preview).

Omfang

Kva som blir migrert

  • activity_main.xml → rot-@Composable med tilstandsheising
  • RecyclerView + ShelterListAdapterLazyColumn
  • DirectionArrowView (eigendefinert Canvas) → Compose Canvas
  • Botnark (valt tilfluktsrom-info) → Card / BottomSheetScaffold
  • dialog_civil_defense.xml + DialogFragmentAlertDialog composable
  • Lasteoverlegg → AnimatedVisibility
  • Innfør MainViewModel for tilstand som i dag er spreidd over MainActivity

Kva som blir verande som Views

  • OSMDroid MapView — pakka i AndroidView (ingen Compose-native OSM-kartbibliotek finst)
  • Widget (RemoteViews) — eventuell Glance-migrering er eit separat tiltak

Framgangsmåte

  1. Legg til Compose-avhengigheiter + aktiver Compose-kompilatoren
  2. Konverter komponentar nedanfrå og opp (DirectionArrowView, ShelterList, BottomSheet, Dialog)
  3. Erstatt activity_main.xml med rot-@Composable + AndroidView for kartet
  4. Innfør MainViewModel for all tilstand
  5. Slett gamle XML-layoutar og ViewBinding

Vurderingar

  • APK-storleik aukar med ~2-3 MB (Compose runtime)
  • OSMDroid kan ikkje bli fullt Compose-native — AndroidView-innpakking er nødvendig
  • Widget-migrering til Glance er eit eige tiltak
  • Compose @Preview fungerer for ikkje-kart-komponentar (retningspil, tilfluktsromliste, botnark)
## Bakgrunn Appen brukar tradisjonelle Android Views med ViewBinding. Jetpack Compose er no den tilrådde UI-framtida for Android og gir betre tilstandshandtering, enklare lister, og komponent-førehandsvisning (`@Preview`). ## Omfang ### Kva som blir migrert - `activity_main.xml` → rot-`@Composable` med tilstandsheising - `RecyclerView` + `ShelterListAdapter` → `LazyColumn` - `DirectionArrowView` (eigendefinert Canvas) → Compose `Canvas` - Botnark (valt tilfluktsrom-info) → `Card` / `BottomSheetScaffold` - `dialog_civil_defense.xml` + `DialogFragment` → `AlertDialog` composable - Lasteoverlegg → `AnimatedVisibility` - Innfør `MainViewModel` for tilstand som i dag er spreidd over `MainActivity` ### Kva som blir verande som Views - **OSMDroid `MapView`** — pakka i `AndroidView` (ingen Compose-native OSM-kartbibliotek finst) - **Widget (`RemoteViews`)** — eventuell Glance-migrering er eit separat tiltak ## Framgangsmåte 1. Legg til Compose-avhengigheiter + aktiver Compose-kompilatoren 2. Konverter komponentar nedanfrå og opp (DirectionArrowView, ShelterList, BottomSheet, Dialog) 3. Erstatt `activity_main.xml` med rot-`@Composable` + `AndroidView` for kartet 4. Innfør `MainViewModel` for all tilstand 5. Slett gamle XML-layoutar og ViewBinding ## Vurderingar - APK-storleik aukar med ~2-3 MB (Compose runtime) - OSMDroid kan ikkje bli fullt Compose-native — `AndroidView`-innpakking er nødvendig - Widget-migrering til Glance er eit eige tiltak - Compose `@Preview` fungerer for ikkje-kart-komponentar (retningspil, tilfluktsromliste, botnark)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
olemd/tilfluktsrom#14
No description provided.