# ktCommon **Repository Path**: onlyzcy/kt-common ## Basic Information - **Project Name**: ktCommon - **Description**: kotlin主仓库 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-04-08 - **Last Updated**: 2024-04-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # :chicken::chicken::chicken:JetPackMvvm - **基于MVVM模式集成谷歌官方推荐的JetPack组件库:LiveData、ViewModel、Lifecycle、Navigation组件** - **使用kotlin语言,添加大量拓展函数,简化代码** - **加入Retrofit网络请求,协程,帮你简化各种操作,让你快速请求网络** ## 演示Demo 已用该库重构了我之前的玩安卓项目,利用Navigation组件以单Activity+Fragment架构编写,优化了很多代码,对比之前的mvp项目,开发效率与舒适度要提高了不少 ## 1.如何集成 - **1.1 在root's build.gradle中加入Jitpack仓库** ``` gradle allprojects { ``` ## 2.继承基类 一般我们项目中都会有一套自己定义的符合业务需求的基类 ***BaseActivity/BaseFragment***,所以我们的基类需要**继承本框架的Base类** - 不想用Databinding与ViewBinding-------可以继承 BaseVmActivity/BaseVmFragment - 用Databinding-----------可以继承BaseVmDbActivity/BaseVmDbFragment** - 用Viewbinding-----------可以继承BaseVmVbActivity/BaseVmVbFragment** **Activity:** ``` kotlin abstract class BaseActivity : BaseVmDbActivity() { /** * 当前Activity绑定的视图布局Id abstract修饰供子类实现 */ abstract override fun layoutId(): Int /** * 当前Activityc创建后调用的方法 abstract修饰供子类实现 */ abstract override fun initView(savedInstanceState: Bundle?) /** * 创建liveData数据观察 */ override override fun createObserver() /** * 打开等待框 在这里实现你的等待框展示 */ override fun showLoading(message: String) { ... } /** * 关闭等待框 在这里实现你的等待框关闭 */ override fun dismissLoading() { ... } } ``` **Fragment:** ``` kotlin abstract class BaseFragment : BaseVmDbFragment() { abstract override fun initView(savedInstanceState: Bundle?) /** * 懒加载 只有当前fragment视图显示时才会触发该方法 abstract修饰供子类实现 */ abstract override fun lazyLoadData() /** * 创建liveData数据观察 懒加载之后才会触发 */ override override fun createObserver() /** * Fragment执行onViewCreated后触发的方法 */ override fun initData() { } /** * 打开等待框 在这里实现你的等待框展示 */ override fun showLoading(message: String) { ... } /** * 关闭等待框 在这里实现你的等待框关闭 */ override fun dismissLoading() { ... } } ``` ## 4.网络请求(Retrofit+协程) ## 7.混淆 ``` kotlin -keep class me.zcy.jetpackmvvm.**{*;} ################ ViewBinding & DataBinding ############### -keepclassmembers class * implements androidx.viewbinding.ViewBinding { public static * inflate(android.view.LayoutInflater); public static * inflate(android.view.LayoutInflater, android.view.ViewGroup, boolean); public static * bind(android.view.View); } ```