- Kotlin语言编程,JetPack组件架构,Material Design风格
- Repository层实现业务逻辑,ViewModel控制视图逻辑,并用Koin框架依赖注入
- 使用Retrofit,Room(用户信息,阅读历史),协程构建数据层
- 参考bilili启动页style适配
- 仿酷安动态换肤,夜间模式(灵活使用theme及系统属性,用最少的资源文件和代码实现动态换肤,可参考https://juejin.im/post/6844904200673968141)
- 用户信息,阅读历史使用room数据库,配合flow,livedata,实现可观察性
- 1.1 新建AppModulel类
val viewModelModule = module {
viewModel { HomePageViewModel(get(), get()) }
}
val repositoryModule = module {
single { RemoteDataSource() }
single { ArticleUserCase(get()) }
single { MainRepository(get()) }
}
val appModule = listOf(viewModelModule, repositoryModule)
- 1.2 MyApplication
startKoin {
androidLogger(Level.INFO)
androidContext(this@MyApplication)
modules(appModule)
}
- 1.3 Repository,Viewmodel
class ArticleUserCase(private val remoteDataSource: RemoteDataSource) {
}
class MainRepository(private val homeRemoteDataSource: RemoteDataSource) {
}
class HomePageViewModel(private val mainRepository : MainRepository, private val articleUserCase:ArticleUserCase) : BaseViewModel() {
}
- 1.4 Activity,Fragment中
class HomePageFragment : BaseVMFragment<HomePageViewModel>(), OnLoadMoreListener {
override fun initVM(): HomePageViewModel = getViewModel()
}
- ImmersionBar -- android 4.4以上沉浸式实现
- 一个依赖注入框架koin
- 处理网络请求的框架-Okhttp
- 一个基于OKHttp封装的网络加载框架-Retrofit
- EventBus for Android,消息总线,基于LiveData-LiveEventBus
- Android智能下拉刷新框架-SmartRefreshLayout
- 屏幕适配AndroidAutoSize
- Toast & Snackbar & TopBar & Dialog-smart-sho
- Android界最万能的TabLayout(不仅仅是TabLayout). 高能自绘控件, 继承自ViewGroup, 非组合控件.
- anko
- 一个强大的轮播库-BGABanner-Android
- 一个强大并且灵活的RecyclerViewAdapter-BaseRecyclerViewAdapterHelper)
- 基于Android WebView的一个强大的库-Agentweb
- 基于mmap内存映射的移动端通用 key-value 组件-MMKV
- 感谢鸿洋大神提供的WanAndroid开放API,和里面的一些优秀开源项目和文章