项目地址

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的结果
在这里插入图片描述

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐