# HQW **Repository Path**: BAILIS/HQW ## Basic Information - **Project Name**: HQW - **Description**: 让开发者在更短的代码中实现动画效果 本库功能针对界面,动画,下载,上传实现封装,后续更会增加多线程传输,影音解码,字幕外挂,字幕调节等等 本库先进入测试阶段,更多详细内容请看完成的计划 - **Primary Language**: Android - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 44 - **Forks**: 19 - **Created**: 2022-03-11 - **Last Updated**: 2026-05-30 ## Categories & Tags **Categories**: android-modules **Tags**: None ## README # HQW [![JitPack](https://jitpack.io/v/com.gitee.BAILIS/HQW.svg)](https://jitpack.io/#com.gitee.BAILIS/HQW) HQW 是一个 Android 常用能力封装库,主要提供基础页面组件、权限处理、文件处理、图片处理、应用信息、设备信息、存储信息、文本处理、窗口控制、下载上传等能力。 ## 当前版本 - 正式版本:`2.0.5` - 远程仓库:`https://gitee.com/BAILIS/HQW` - Java:`17` - Kotlin:支持 Kotlin/Java 混合开发 - minSdk:`24` - compileSdk:`37` - targetSdk:`37` ## 依赖方式 在项目根目录的 `settings.gradle` 中加入 JitPack 仓库: ```gradle dependencyResolutionManagement { repositories { google() mavenCentral() maven { url 'https://jitpack.io' } } } ``` 在业务模块中加入依赖: ```gradle dependencies { implementation 'com.gitee.BAILIS:HQW:2.0.5' } ``` ## 功能模块 ### 基础组件 - `HQWActivity`:封装普通 `Activity` 常用能力,包括页面跳转、横竖屏控制、权限请求、软键盘收起、状态栏/导航栏控制、屏幕常亮和防截屏。 - `HQWAppCompatActivity`:基于 `AppCompatActivity` 的基础页面,支持运行时权限、特殊权限、拍照、文件选择和窗口控制。 - `HQWComponentActivity`:基于 `ComponentActivity` 的基础页面,使用 Activity Result API 处理权限、拍照和文件选择。 - `HQWFragment`:封装 Fragment 中常用的页面跳转、权限、特殊权限、拍照、文件选择、软键盘收起和窗口控制。 - `HQWDialog`:封装 Dialog 全屏、沉浸式、背景阴影、边距扩展、位置控制等常用配置。 - `HQWBottomDialog`:底部弹窗,默认从屏幕底部向上弹出,支持全宽、内容高度自适应、背景阴影和底部偏移配置。 - `HQWSystemBarManager`:状态栏和导航栏管理器,支持颜色、深浅图标、显示隐藏、沉浸式、全屏和刘海屏短边适配。 方向设置统一使用静态 int 常量,例如 `setOrientation(ORIENTATION_LANDSCAPE)` 会切换横屏,`setOrientation(ORIENTATION_PORTRAIT)` 会切换竖屏,不再传入“横屏/竖屏”等字符串。 `setStatusNavigationBar` 已按 Android 版本做兼容,API 21+ 负责颜色,API 23+ 负责深色状态栏图标,API 26+ 负责深色导航栏图标,低版本会自动跳过不支持的效果。 系统栏建议优先使用 `getSystemBarManager().setFullscreen(true).apply()` 或 `HQWSystemBarManager.with(activity).setStatusBarColor(color).apply()`,可以在同一个页面里反复修改。 ### 工具类 - `HQWAppUtil`:获取当前应用版本、查询指定包名应用、获取指定应用版本、安装 APK。 - `HQWBase64Util`:字符串 Base64 编码/解码、Bitmap 转 Base64。 - `HQWByteUtil`:按 1000 或 1024 进制转换字节大小,支持指定单位输出。 - `HQWDeviceInfoUtil`:获取屏幕宽高、Android ID、UUID、序列号、厂商、品牌、型号、系统版本、语言和完整设备信息。 - `HQWFileUtil`:创建文件、创建目录、删除、清空目录、复制、移动、重命名、读写字节、读写文本、获取文件名/扩展名/MIME、Uri 转路径、获取缓存目录和公共媒体目录文件。 - `HQWFormatUtil`:金额格式化、保留小数、去除无效 0、货币格式化、金额字符串解析。 - `HQWFragmentUtil`:批量移除 `FragmentActivity` 中的 Fragment。 - `HQWImageUtil`:图片保存、分享、Drawable/Bitmap 转换、网络图片加载、图片缩放、采样解码、EXIF 复制、图片格式识别,支持 JPEG、PNG、WEBP 等常用格式压缩,也支持压缩到指定 KB。 - `HQWJsonUtil`:通过 Gson 进行对象解析、列表解析,以及按 key 或下标读取 JSON 值。 - `HQWLocaleUtil`:按指定 `Locale` 初始化语言环境。 - `HQWLogUtil`:封装 `Log.i/v/d/e/w` 输出。 - `HQWMd5Util`:生成大写 MD5。 - `HQWKeyboardUtil`:收起软键盘、清理输入框焦点。 - `HQWPermissionUtil`:普通权限和特殊权限统一入口,支持权限过滤、授权检查、特殊权限跳转、定位服务、通知权限、APK 安装权限、开发者选项状态检查,并支持注册自定义普通权限适配器和特殊权限处理器。 - `HQWSDCardUtil`:获取 RAM、内部存储、外部存储、SD 卡挂载状态、剩余空间和总空间。 - `HQWTextUtil`:测量文字宽度、富文本颜色区间处理、关键字高亮。 - `HQWTextviewUtil`:识别 TextView 中的 URL,并拦截超链接点击。 - `HQWTimeUtil`:毫秒时间格式化、当前时间格式化。 - `HQWWeightUtil`:dp/px 转换、状态栏/导航栏显示隐藏、状态栏高度、导航栏高度、屏幕宽高、View 绘制监听。 ### 控件与动画 - `HQWViewPagerAdapter`:ViewPager 适配器,支持动态 View 列表。 - `HQWViewPager`:可控制是否允许滑动、是否重新测量高度的 ViewPager。 - `HQWRecyclerView`:支持嵌套场景测量的 RecyclerView。 - `HQWImageView`:自定义图片控件。 - `AutoPollRecyclerView`:支持自动滚动的 RecyclerView。 - `MarqueeTextView` / `MarqueeTextView2`:跑马灯文本控件。 - `RichWebView`:扩展 WebView。 - `HQWAnimation`:位移、旋转、透明度、宽高变化等常用动画封装。 - `HQWViewPagerAnimationOne` / `HQWViewPagerAnimationTwo`:ViewPager 页面切换动画。 - `HQWViewPager2AnimationOne` / `HQWViewPager2AnimationTwo`:ViewPager2 页面切换动画。 ### HTTP 能力 - `HQWDownloadManager`:实例化下载管理器,支持普通下载、断点续传、进度回调和取消下载,页面销毁时可直接调用 `cancel()`。 - `DownloadListener`:下载成功、失败、暂停、进度回调。 - `DownloadRegister`:保存下载请求和文件大小信息。 - `DownloadConfig`:下载请求配置。 - `HQWUploadManger`:文件上传。 - `HQWExMultipartBody`:上传进度包装。 - `OkhttpConfig` / `RetrofitConfig` / `HttpClient`:OkHttp、Retrofit 和 HTTP 客户端基础配置。 ## 使用注意 - 类名统一保留 `HQW` 前缀,方便在开源项目中识别来源。 - 库模块已同时启用 Java 与 Kotlin 编译,Java 页面、Kotlin 页面都可以直接依赖使用。 - 工具类按职责拆分:Base64 放在 `HQWBase64Util`,图片放在 `HQWImageUtil`,文件放在 `HQWFileUtil`。 - 使用 APK 安装、拍照保存、图片分享等涉及文件共享的能力时,宿主应用需要配置 `FileProvider`,`authorities` 建议使用 `${applicationId}.fileProvider`。 - Android 13 及以上读取图片、视频、音频时,需要宿主应用按系统版本申请对应的媒体权限。 - 下载保存到公共目录时,需要按目标 Android 版本处理存储权限或使用应用专属目录。 ## API 文档 - [Api.md](./Api.md)