An unofficial Douban app mainly used for browsing the Groups section. Subjects development is just started.
(豆瓣非官方app,主要用于小组浏览。书影音开发才刚刚开始。)
Note: I am an inexperienced Android beginner and the only developer of it. Occasional crashes may happen, UI design may be incomplete and features you need may be missing. This project implements some essential features as well as user requested ones which are practical. It is also going to be used as my playground for trending technologies such as Jetpack Compose. This brings tons of migration tasks (remaining ones), and also means that old and new libraries are currently mixed.
The development of this app is slowed down again so that I can spend more time on the exploration of the backend and frontend areas.
Known issues:
- The last vertical scroll position of selected tab in Group Detail Screen is always lost (reset) when returned from Topic Detail Screen, since Navigation Compose migration, v0.6.3(603).
- Following statuses
(no lists are paginated yet)
- Top 250 Movies/Books
- My movie/tv/book statuses
- My subject statuses with interests
- My groups
- Favorite groups and tabs
- My topics (or groups of the day, for guests)
- Group information
- Group tabs
- Topic content
- Topic comments
- Reshare statuses
- Search groups
- Groups of the day
- Group topic notifications (this feature is broken now)
- Login status
- Image view and save
Login Screen
- Session login
- Guide
- Manual submission
- Supported Android versions: 8.1 - 14
- Sometimes you need to manually clear app data after installation when I forget to handle ROOM database schema change
- Feel free to file issues
To not get this project/myself into trouble, the update of the source code in the public repo has been suspended. However, the latest release is always available, and I'm willing to share the part of the code that you are interested in if it does not qinquan that much.
- Me and other developers who are learning Android, Kotlin and version control
- Me and other users who desire easier access to Douban, especially the Groups module of it.
- Please use it only for personal learning purposes.
- Please don't share it on other websites/apps without permission.
It not only implements some features (mainly of Groups) of Douban app, but also has its own features.
- Partial offline caching support
- Ad-free, lite (~4MB)
- Partially support URL deep links
- Rooted users can reuse login session of Douban app
- Partial support for viewing content in Douban WebView optimized for mobile reading in case of need (no longer updated)
- Basic use of MD2/3 (UI may not look good during migration)
- Provides simple type-based Subjects (书影音) experience including support of user actions (WIP 🚧)
Recommended topic notifications (broken)
- Foundation
- Architecture
- Lifecycles
- Navigation
- Paging
- Room
- DataStore
- ViewModel
- WorkManager
- Data Binding
- UI
- Animations & Transitions
- Jetpack Compose
- Fragment
- Layout
- Behavior
- Third party and miscellaneous libraries
- Kotlin Coroutines
- Kotlinx Serialization
- Ktor
- Coil
- libsu
Incoming features, bug fixes, libraries to use and environment changes (roughly in chronological order)
- Subject detail screen
- Gradually revert naming conventions to those of Douban
- Gracefully remove Fragments: First reduce usages of Fragment methods
- Gradual migrations:
- From MD2 / custom design to MD3
- From View and Data Binding to Jetpack Compose
- Exceptions: WebView/RatingBar/PreferenceFragmentCompat/CollapsingToolbarLayout/Spinner
- Subjects (书影音)
- Show a glimpse of T250 instead in MoviesScreen/BooksScreen with book/movie module data and add a separate T250Screen
- (Single-)status interests screen & its pagination
- T250 pagination
- More details & sub-features
- Reuse item logic of search result groups / groups of the day
- Fix the "known issue" above after researching on the Subjects tab, a simpler case of TabRow + HorizontalPager + LazyList + Pagination + Navigation Compose
- Groups - Home
- Support pagination?
- Add favorite tabs for topic list area
- Status bar color
- Show error messages
- Bring back load state visualization which was removed for simplicity during various types of migrations
- Paging 3 refresh, loading status ...
- Subscribe/favorite/save
- Save topics
- Pin my groups
- Add corresponding item actions
- Allow expanding group descriptions
- Bring back basic support for dark mode & landscape experience
- Shared element
- Group tab: Track read
- Use the new nullable "edit_time" property of network topics
- Search
- Search group/tab topics (in-group)
- Search topics of all groups (global)
- Better model layering
- Languages
- Translations
- Pick language
- Group Detail
- Compose collapsing toolbar when API is more convenient to use
- Collapse on entrance for the subscribed/favorited group/tab
Lazylist
problems- Restoration of scroll position is problematic
- Topic content WebView problems
- Flinging up to topic content is not smooth https://issuetracker.google.com/issues/172029355
- Sometimes topic content fails to be loaded on some low-end or large-screened devices, or of special layout (not sure which sets constraint)
- LazyLayoutPinnableItem?
- ...
- Topics feed notifications
- Find why it is broken and fix it
- Clarify:
- Improper use may disturb you and drain phone battery (untested)
- Better keep app in background
- Mechanism: Actively query group topics (without tab_id parameter, to increase efficiency) by each group
- “每次动态更新请求的帖子总数限制” -> ?
- Create reusable class for all topic notification settings
- More subscribe/favorite/save
- Save comments
- Subscribe topics
- Sync custom lists by maintaining a fake private note which holds the data
- Custom feeds like Reddit
- Groups: Group/tab/topic shortcuts
- Hide officially-marked unfriendly content by default
- Support blocking unfriendly content
- NetworkManager
- Widgets
- Lists: Reddit-like item expand/collapse
- Group Detail: For topic items, optimize tag display, e.g., assign color to each tag mapped from ID
- Reuse more existing Douban preferences
- Independent login (seems impossible)
- Find API for all followed topics (seems impossible)
- Group Detail: WebView for group
- Statueses (in maintanence state now, only when requested)
- More card types
- Pagination
- Test
- Heavy use of Material Design
- Jetpack Compose samples
- Android Sunflower
- Developer Guides
- Github Browser Sample with Android Architecture Components
- Android Architecture Blueprints v1 (todo-mvvm-live)
- Material Design
- Interactive communities: StackOverflow, Google, GitHub
, cnblogs, Medium, CSDN, IssueTracker, etc.
- Especially went through articles/posts on how to gain Douban access
- Various social apps as references for UI design
- HTTPCanary for douban access
- jadx-gui for understanding models
- Google Chrome for CSS debugging
I'm totally aware that this app is mediocre. However, the increasing number of stars keep me motivated! Thank you!
If you find it really useful and would like to buy me a coffee, which I am not ready for, please contact me by creating an issue.