- Notifications
You must be signed in to change notification settings - Fork 11
Open
Description
Operation 'Fantasy Fudge'
Task: Rewrite the activity-based fudge UI in an immediate-mode UI library.
Why: Current UI is slow, has too much state code, only works in portrait mode, and is hard to maintain.
- Main Screen
- Image Gallery
- Load thumbnails currently in view as user scrolls
- Load thumbnails in the background
- Load in metadata on idle
- Image viewer
- Progress bar
- Zoomable image viewer
Things that should improve/be added:
- Swipe in gallery (Add possibility to swipe between photos #13)
- Support landscape mode
- Remove lag/stutter
- Reduce LoC and maintenance burden
- Geolocation menu (Features request - geolocation and raw processing #21)
Jetpack Compose
- Recommended Android UI library, used by Google for Google Play, settings app, etc
- Kotlin has great Java interop
- Good FFI support (JNI)
- iOS and desktop support with compose multiplatform
- Backed by Google and JetBrains
- A slow migration can be done, since compose allows embedding views and using legacy view code
Flutter
- Android/iOS/Desktop
- I think Dart is a bad language
- Jank bugs (https://medium.com/@chamithmathukorala/shader-compilation-jank-in-flutter-8cc9d92aa8b3)
- Bad FFI support last time I checked
- Not good Java interop
- Google might kill it (?)
Challenges
-
Gallery is really hard to deal with. It has to lazy load thumbnails (many times slower than loading local files) and keep up with quick scrolling (loading last seen first), as well as loading in metadata when the thunbnail loader is idle. This works OK right now, but it still stutters.
-
Learning curve. I normally do embedded development so jumping to a very high level language like Kotlin screws with my head and the way I'm used to reading code.
Metadata
Metadata
Assignees
Labels
No labels