Android 简单的基础库
·
项目地址
Base库说明
- LiveDataBus.kt 通过反射实现的LiveDataBus页面之间通信 activity与service之间通信,请使用LifecycleService;其本质是在执行observe()之后,对比version,然后判断是否粘性 可参考
- AndroidLiveDataBus.kt 通过androidx.lifecycle 包名 直接拿到LiveData.START_VERSION 重写了observe()方法的判断,并且使用装饰模式,让最终调用onChanged()改变值的时候判断是否粘性可参考
- DpOrPxUtils dp 与 px转换
- KeyBoardUtils 软键盘工具类
- LogUtils 日志工具类 application中调用init方法,可实现自动debug打印日志 release不打印日志
- BaseActivity activity基类 已实现无网络自动弹窗提醒及网络状态监听
- BaseFragment fragment基类
- BaseParentFragment 可实现使用父fragment的viewmodel数据共享的fragment基类 实例:PFragment+CFragment+PViewModel
- BaseShareFragment 可实现使用所属activity的viewmodel数据共享的fragment基类 实例:MainActivity+AFragment+BFragment+MainViewModel
- BaseViewModel viewmodel 基类
- BinddingAdapter 用于绑定view的text的属性的的值和livedata 双向绑定的时候的数据类型转换 可参考
- MmkvUtils 腾讯数据缓存框架 替代sp
- HttpDialog 加载进度框
- StringUtils 字符串处理的工具类 或许可以改成String扩展函数的方式
- ActivityManager Activity管理类
- Toaster 土司
- StatusBarUtils 状态栏设置类
- PermissionManager 权限申请
- PermissionPageManagement.java 各个手机拼盘跳转应用设置页面
- PermissionsHelperProxy.java 为了修改默认权限申请对话框 参考
lib_net库说明
- BaseNetRepository 一个例子
- BaseUrlInterceptor 请求拦截器 用于自动设置token
- HttpCreater retrofit okhttp创建类 下载请使用downOkHttpClient 因为日志拦截器拦截会打印二进制数据
- NetUtils 网络状态获取及监听类
loading 各种加载进度框 参考
netty 库 就是netty连接库 参考
BaseActivity说明
监听BaseViewModel 中的requestState 的值 设置为1时,自动展示请求框 0隐藏
loadingMsg 修改请求框提示文字
private fun initDefault() {
viewModel?.let {
it.requestState.observe(this){ //是否显示加载框
when(it){
0 -> dismissHttpDialog()
1 -> showHttpDialog()
}
}
it.loadingMsg.observe(this){ //设置加载框的文字
msg ->
httpDialog?.let {
if(it.isShowing){
it.setMsg(msg)
}
}
}
}
}
权限 重写以下方法,自行实现逻辑 也可在onPermissionsDenied 失败的时候,在此处 统一处理
/**
* 请求权限结果
*/
open fun onPermissionsGranted(requestCode: Int) {}
/**
* 无权限提示
*/
open fun onPermissionsDenied(deniedPermission: String) {}
配置文件说明
config.gradle.kts
val baseUrl: String by extra("https://www.wanandroid.com") //基础请求路径地址
val minSdk : Int by extra(24)
val targetSdk : Int by extra(34)
val compileSdk : Int by extra(34)
val storeFile : String by extra("../app/demo.jks") //签名文件 正式使用请修改
val storePassword : String by extra("123456")
val keyAlias : String by extra("demo")
val keyPassword : String by extra("123456")
val versionCode : Int by extra(1) //版本
val versionName : String by extra("1.0.1")
val app_logo: String by extra("logo_1") //切换logo后重新build
val applicationId: String by extra("com.zqq.demo")
val appName: String by extra("whyke")
//val app_logo: String by extra("logo_2") //切换logo后重新build
//val applicationId: String by extra("com.zqq.demo1")
//val appName: String by extra("whyke1")
上边logo切换后 重新Sync project 然后build的结果
更多推荐


所有评论(0)