FastLib

Project Url: AriesHoo/FastLib
Introduction: 一个 Android 项目级快速开发框架,节约大部分写常用功能时间以实现更多项目业务功能及体验上的优化..有问题欢迎 issue。主要实现功能: 1、基于 Retrofit2.x 及 RxJava2.x 的网络请求封装、网络请求与生命周期绑定、快速观察者、快速 loading 观察者、快速返回常用错误 2、 常用功能库二次封装方便调用:Glide 加载图片封装、TabLayout+ViewPager Fragment 切换封装、Logger 日志打印封装 3、 多种常用界面布局:标题+多状态+下拉刷新+列表、标题+ViewPager 等方便快速创建常用布局增加 layout 复用 4、Fragment 懒加载封装 5、 快速实现 Activity 滑动返回、下拉刷新加载更多、沉浸式等
More: Author   ReportBugs   
Tags:

因 Github 图片解析异常可使用 Gitee 备用仓库查看

简介:

FastLib 是一个整合了常用主流开源项目的 Android 快速搭建UI库, 其中包含 RetrofitRxJavaRxAndroidRxLifecycle等三方库, 并且提供较多的基础ActivityFragment如快速搭建微信类 tab+fragmentFastMainActivity、快速搭建包含 TitleBar 的FastTitleActivityFastTitleFragment、快速搭建列表刷新的FastRefreshLoadActivityFastRefreshLoadFragment;并提供快速配置Retrofit相关功能的FastRetrofit:解决添加统一请求header多 url等常见功能。

FastLib 只是一个快速搭建 UI 及网络请求的库,是常用三方库的一个封装集合,本身不具备框架特性。可在此基础上做 MVP、MVVM 等框架的扩展

wiki 基于FastLib 2.2.12Android Studio 3.3.1Gradle 4.10.1版本编写,后期重大变更会同步更新。

Demo 中使用到的网络请求 api 来源于readhub 版权及最终解释权归 readhub 所有,如有侵权请联系删除!

Stargazers over time

主要功能

  • 基于Retrofit2.xRxJava2.x的网络请求封装、网络请求与生命周期绑定、快速观察者、快速 loading 观察者、快速返回常用错误
  • 常用功能库二次封装方便调用:Glide加载图片封装GlideManagerTabLayout+ViewPager Fragment切换封装TabLayoutManagerLogger日志打印封装LoggerManager
  • 多种常用界面布局:标题+多状态+下拉刷新+列表标题+ViewPager等方便快速创建常用布局增加 layout 复用
  • Fragment 懒加载封装
  • 快速实现Activity 滑动返回下拉刷新+自动加载更多沉浸式状态栏+导航栏
  • 解决一些老大难问题:Tab+Fragment 当 Activity 回收后 Fragment 重叠-FastMainActivity软键盘无法弹起-KeyboardHelper状态栏文字转换-StatusBarUtil不同 Fragment 切换状态栏文字颜色变换-BasisFragment+StatusBarUtilAndroid 7.0 fileprovider-FastFileUtilAndroid 9.0 network security policy 问题
  • 提供众多常用工具类:ToastUtil-统一样式吐司FastFormatUtil-快速格式化时间、字节单位、double 类型小数点保留几位SizeUtil-尺寸转换屏幕宽高获取SPUtil-暂存数据

其它功能请在 demo 中发现,详细使用请看wiki

Download-蒲公英(安装密码 1)

Download-蒲公英

Download-github

关于混淆

1、2.2.13_beta12 版本开始自带混淆规则,并且会自动导入,正常情况下无需手动导入。

2、2.2.13_beta12 以下版本可参考proguard-rules.pro

关于模板项目 template

伴随新版本 2.3.6 发布,项目增加一个模板项目 template 以完成基础配置,开发者可直接在此项目上进行开发方便。

重大更新日志 其它版本参看Release

  • 2.4.0

    • 升级: 升级 BaseRecyclerViewAdapterHelper 到 3.x--升级变动较大主要是 BaseRecyclerViewAdapterHelper 包名及部分 api 调整参考 demo
    • 升级: 升级 SmartRefreshLayout 到 2.x-升级变动较大主要是包名及 api 变动及拆分了不同的刷新头和脚
    • 升级: 日常升级其它三方库版本不涉及包名及 api 变更
  • 2.3.2

    • 优化: 优化 FastManager 初始化 init 逻辑,FastLib 自动初始化解决多进程异常问题
    • 优化: 将 eventbus、bga-swipebacklayout、UIWidget:tab-layout 使用 compileOnly 开发者根据需要导入
  • 2.2.13

    • 新增: 下拉刷新接口 IFastRefreshView 及标题栏 IFastTitleBarView
  • 2.2.11-androidx

    • 重大变更: 2.2.11 的 androidx 版本-起始版本
  • 2.2.11

    • 最后一个 support 版本以后版本为 androidx
  • 2.2.10-beta6

    • 重大变更:重构大部分代码及实现方式删除许多类及实现方法包括三方库慎重升级与之前版本有很大差异
    • 优化:BasisFragment 控制是否为单 Fragment 方法
    • 优化:调整 ActivityFragmentControl 将状态栏及导航栏控制增加
    • 优化:多状态管理 StatusLayoutManager 调整完成
    • 优化:滑动返回控制 swipeBack 功能新增各种回调功能
    • 优化:将原默认配置方法调整到最终实现类功能
    • 新增:增加友盟统计功能演示
    • 新增:新增首页演示其它三方库状态栏及导航栏功能控制
    • 新增:个人 MineFragment 中选择头像功能三方库状态栏及导航栏控制示例
    • 优化:UI 全局控制相关回调并调整三方库 Activity 控制
    • 优化:新增 FastRetrofit 下载/上传功能
    • 优化:新增 FastRetrofit 控制多 BaseUrl 方式
    • 新增:新增 Demo 检查版本功能试验下载文件功能
    • 删除:删除原多状态布局相关配置
    • 修复:修改 FastRefreshActivity 设置 Adapter 错误 BUG
    • 升级:升级部分三方库版本
    • 修复:删除 IHttpRequestControl 判断避免 http 错误时无法全局控制 BUG
    • 优化:修改解析 method 方法增加对 get 方法兼容
    • 优化:修改 ToastUtil 增加子线程调用自动切换主线程操作
    • 优化:优化下载功能新增 FastDownloadRetrofit 并新增格式化文件方法 FastFormatUtil#formatDataSize
    • 修复:修复 FastRetrofit 无法删除单个 header 问题
    • 优化:优化上传文件并通过新增的 FastUploadRequestBody 及 FastUploadRequestListener 实现单个/多个文件 上传进度监听 可参看 MineFragment 示例
    • 优化:FastFileUtil 安装 App 在 Android 7.0 以下版本兼容性
    • 新增:新增 IMultiStatusView 用于设置 StatusLayoutManager 属性
    • 优化:调整 setMultiStatusView 位置并抽离设置 StatusLayoutManager 相关属性
    • 优化:注释及代码规范调整
    • 优化:调整列表刷新控制多状态配置及 itemClick 事件
    • 优化:优化下载功能统一使用全局设置 Retrofit
    • 优化:优化 LoggerManager 可设置自定义属性
    • 优化:优化 FastRetrofit 日志打印控制--json 格式打印
    • 新增:demo 新增拖拽调整列表顺序功能
    • 新增:FastFileUtil 及 fast_file_path 以适配更多文件系统及开发者自定义
  • 2.2.9-beta6

    • 重构设置全局 TitleBarView 设置方式(通过 TitleBarViewControl 实现可参看 AppImpl 实现类)
  • 2.2.9-beta5

    • library 直接 compile UIWidget core 3.1.0 版本
  • 2.1.5 更新

    • 新增众多全局设置 TitleBarView 属性、Adapter 加载动画、SmartRefreshLayout 刷新配置、Glide 加载占位 Drawable 属性等控制的 FastConfig 类用于全局设置应用通用属性并减少部分冗余代码及冗余 drawable 资源文件
  • 2.1.0 更新

    • 将部分系统及第三方库在 FastLib 里使用 provided 编译,实际项目中需要根据项目需要 compile 合适的版本避免版本重复

录屏预览

折叠屏效果一览-无法直接预览点击查看效果

FastRefresh.gif

快速实现页面下拉刷新-全局控制及局部个性化-参考 WebActivity、FastRefreshActivity、MineFragment

虚拟导航栏控制-参考AppImpl 类 NavigationBarControl 接口实现注释说明

模拟器软键盘控制

华为可隐藏软键盘控制

华为全面屏手势控制

DoraemonKit 集成效果(一定要手动开启 悬浮窗权限 )-包括沉浸式及 UI 微调-无法直接显示点击可查看效果

Gradle 集成-尽量使用正式版本

allprojects {
    repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}
dependencies {
      implementation 'com.github.AriesHoo:FastLib:x.y.z'
}

Maven 集成

       <repositories>
        <repository>
            <id>jitpack.io</id>
            <url>https://jitpack.io</url>
        </repository>
    </repositories>
    <dependency>
        <groupId>com.github.AriesHoo</groupId>
        <artifactId>FastLib</artifactId>
        <version>x.y.z</version>
    </dependency>

Compile 集成

implementation project(':fastLib')

包含第三方库

    compileSdkVersion = 28
    minSdkVersion = 19
    minLibSdkVersion = 15
    targetSdkVersion = 28
    supportVersion = "1.1.0"
    widgetVersion = "3.2.25"
    smartRefreshLayoutVersion = "2.0.3"
    BRVAHVersion = "3.0.4"
    agentwebVersion = "4.1.4"
    glideVersion = "4.12.0"
    butterknifeVersion = "10.2.3"
    versionCode = 249
    versionName = "2.4.0"
dependencies {
    compileOnly "com.google.android.material:material:".concat(supportVersion)
    compileOnly 'androidx.appcompat:appcompat:'.concat(supportVersion)
    compileOnly "androidx.recyclerview:recyclerview:".concat(supportVersion)
    //万能适配器
    compileOnly 'com.github.CymChad:BaseRecyclerViewAdapterHelper:'.concat(BRVAHVersion)
    //webView 库
    compileOnly 'com.just.agentweb:agentweb:'.concat(agentwebVersion)
    //下拉刷新库
//    compileOnly 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-andx-14'
    compileOnly 'com.scwang.smart:refresh-layout-kernel:'.concat(smartRefreshLayoutVersion)
    //图片加载
    compileOnly 'com.github.bumptech.glide:glide:'.concat(glideVersion)
    //常用 UI 控件(TitleBarView、RadiusView 等)
    api "com.github.AriesHoo.UIWidget:widget-core:".concat(widgetVersion)
    //快速 Tab 库
    compileOnly "com.github.AriesHoo.UIWidget:tab-layout:".concat(widgetVersion)
    //日志打印
    api 'com.orhanobut:logger:2.2.0'
    //注解
    api 'com.jakewharton:butterknife:'.concat(butterknifeVersion)
    //retrofit+rxjava 网络请求及数据解析相关
    api "io.reactivex.rxjava2:rxjava:2.2.20"
    api 'io.reactivex.rxjava2:rxandroid:2.1.1'
    api 'com.squareup.retrofit2:retrofit:2.9.0'
    api 'com.squareup.retrofit2:converter-gson:2.9.0'
    api 'com.squareup.retrofit2:adapter-rxjava2:2.9.0'
    //3.12.x 是支持 Android 4.4 的
    api 'com.squareup.okhttp3:logging-interceptor:3.12.2'
    api 'com.google.code.gson:gson:2.8.5'
    //处理 rxjava 内存泄漏-生命周期绑定
    api 'com.trello.rxlifecycle3:rxlifecycle-components:3.1.0'
    //滑动返回 Activity
    compileOnly 'cn.bingoogolapple:bga-swipebacklayout:2.0.1@aar'
    //页面事件交互-androideventbus-停止维护
    compileOnly 'org.simple:androideventbus:1.0.5.1'
    //页面事件交互-eventbus
    compileOnly 'org.greenrobot:eventbus:3.1.1'
    //多状态视图切换
    api 'com.github.Bakumon:StatusLayoutManager:1.0.4'
}

鸣谢

  1. RetrofitSquare出品的网络请求库,极大的减少了 Http 请求的代码和步骤
  2. RxJava 提供优雅的响应式 API 解决异步请求以及事件处理
  3. RxAndroid 为 Android 提供响应式 API
  4. Rxlifecycle,在 Android 上使用 RxJava 都知道的一个坑,就是生命周期的解除订阅,这个框架通过绑定 Activity 和 Fragment 的生命周期完美解决该问题
  5. Okhttp 同样 Square 出品,不多介绍,做 Android 的都应该知道
  6. GsonGoogle 官方的 Json Convert 框架
  7. ButterknifeJakeWharton 大神出品的 View 注入框架
  8. AndroidEventBus 是一个轻量级的 EventBus,提供 TAG 支持
  9. Loggerorhanobut 出品的 Log 框架,FastLib提供相关封装类LoggerManager
  10. GlideGoogle推荐的图片加载库,FastLib提供相关封装类GlideManager
  11. BaseRecyclerViewAdapterHelper陈宇明封装的 RecyclerView 适配器帮助类
  12. SmartRefreshLayoutscwang90封装的刷新库,扩展性很强
  13. AgentWebJustson封装的原生 WebView 库,使用方便扩展性很强
  14. BGASwipeBackLayoutbingoogolapple-王浩封装的微信效果的 Activity 滑动返回库
  15. StatusLayoutManagerBakumon封装的多状态控制管理工具,方便实现加载中、加载失败、网络错误等状态
  16. TabLayoutAriesHoo forked from FlycoTabLayout并加以优化调整的主界面 tab、滑动 tab、分段选择器 tab 功能库
  17. UIWidgetAriesHoo 封装的常用 UI 库(TitleBarView、RadiusView、StatusViewHelper、NavigationViewHelper 等)

License

Copyright 2017-2021Aries Hoo

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Apps
About Me
GitHub: Trinea
Facebook: Dev Tools