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 license

简介:

一个 Android 项目级快速开发框架,节约大部分写常用功能时间以实现更多项目业务功能及体验上的优化.有问题欢迎 issue。

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

主要功能

  • 基于 Retrofit2.x 及 RxJava2.x 的网络请求封装、网络请求与生命周期绑定、快速观察者、快速 loading 观察者、快速返回常用错误
  • 常用功能库二次封装方便调用:Glide 加载图片封装、TabLayout+ViewPager Fragment 切换封装、Logger 日志打印封装
  • 多种常用界面布局:标题+多状态+下拉刷新+列表、标题+ViewPager 等方便快速创建常用布局增加 layout 复用
  • Fragment 懒加载封装
  • 快速实现 Activity 滑动返回、下拉刷新加载更多、沉浸式等

其它功能请在 demo 中发现

[Download]

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

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

Maven 集成

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

Compile 集成

implementation project(':fastLib')

包含第三方库

    compileSdkVersion = 27
    buildToolsVersion = "27.0.2"
    minSdkVersion = 15
    targetSdkVersion = 27
    supportVersion = "27.0.2"
dependencies {
        compileOnly 'com.android.support:design:'.concat(supportVersion)
        compileOnly 'com.android.support:appcompat-v7:'.concat(supportVersion)
        compileOnly 'com.android.support:recyclerview-v7:'.concat(supportVersion)
        //万能适配器
        compileOnly 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.40'
        //webView 库
        compileOnly 'com.just.agentweb:agentweb:4.0.2'
        //下拉刷新库
        compileOnly 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.5.1'
        //图片加载
        compileOnly 'com.github.bumptech.glide:glide:4.5.0'
        //常用 UI 控件(TitleBarView、RadiusView 等)
        api 'com.github.AriesHoo.UIWidget:widget-core:3.2.6'
        //日志打印
        api 'com.orhanobut:logger:2.1.1'
        //注解
        api 'com.jakewharton:butterknife:8.8.1'
        //retrofit+rxjava 网络请求及数据解析相关
        api "io.reactivex.rxjava2:rxjava:2.1.14"
        api 'io.reactivex.rxjava2:rxandroid:2.0.1'
        api 'com.squareup.retrofit2:retrofit:2.3.0'
        api 'com.squareup.retrofit2:converter-gson:2.3.0'
        api 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
        api 'com.squareup.okhttp3:logging-interceptor:3.8.0'
        api 'com.google.code.gson:gson:2.8.5'
        //处理 rxjava 内存泄漏-生命周期绑定
        api 'com.trello.rxlifecycle2:rxlifecycle-components:2.1.0'
        //滑动返回 Activity
        api 'cn.bingoogolapple:bga-swipebacklayout:1.1.8@aar'
        //快速 Tab 库
        api 'com.flyco.tablayout:FlycoTabLayout_Lib:2.1.2@aar'
        //页面事件交互
        api 'org.simple:androideventbus:1.0.5.1'
        //多状态视图切换
        api 'com.github.Bakumon:StatusLayoutManager:1.0.4'
}

实现功能-多看注释及版本修改说明

  • 支持全局多种参数配置(加载更多+多状态页面+网络加载 Loading+下拉刷新头+TitleBarView 属性设置+Activity 滑动关闭-类微信+http 网络返回及错误处理+Activity 与 Fragment 生命周期监听+主页返回键控制) 参看FastManager 实现及 App配置
  • 支持修改三方库 TitleBar 及虚拟导航栏沉浸式 及 Activity 滑动关闭功能
  • 网络请求与 Activity/Fragment 生命周期绑定--通过 RxLifeCycle2.x
  • Retrofit2.x+RxJava2.x 网络请求简要封装支持多 BaseUrl、支持快速下载、快速上传文件功能 参看FastRetrofit
  • Basis 开头是通用基类:BasisActivityBasisFragment
  • Fast 开头的是快速创建常见功能页面:FastMainActivity-快速创建包含 tab 主 Activity;FastTitleActivity-快速创建包含 TitleBarView 的 Activity;FastRefreshLoadActivity-快速创建包含 TitleBarView 及下拉刷新、多状态切换的 Activity;FastWebActivity快速创建应用内 webView 的 Activity;FastTitleFragment-快速创建包含 TitleBarView 的 Fragment;FastRefreshLoadFragment-快速实现下拉刷新的 Fragment;FastTitleRefreshLoadFragment-快速实现包含 TitleBarView 及下拉刷新与多状态切换 Fragment
  • Manager 类是三方库二次封装:目前有GlideManager-图片加载库 Glide 库封装;LoggerManager-日志打印 logger 库封装;RxJavaManager-RxJava 实现 timer;TabLayoutManager-FlycoTabLayout+ViewPager 使用:包括 CommonTabLayout、SlidingTabLayout、SegmentTabLayout 在 FragmentActivity 与 Fragment 中使用的封装
  • Util 类为常用工具:FastStackUtil-应用 Activity 栈管理类;FastUtil-部分应用常用功能类;SizeUtil-尺寸转换类;SPUtil -SharedPreferences 使用类;TimeFormatUtil-时间转换类;ToastUtil-单例模式 toast 工具类:可配置是否后台显示
  • Delegate 为代理类:FastTitleDelegate-快速实现包含 TitleBarView 的 Fragment/Activity;FastRefreshLoadDelegate-快速实现下拉刷新、上拉加载更多、多状态切换的 Fragment/Activity
  • 沉浸式状态栏:继承 FastTitleActivity/FastRefreshLoadActivity/FastWebActivity/FastTitleFragment/FastTitleRefreshLoadFragment 无需额外代码即可实现
  • 状态栏白底黑字模式:同沉浸式状态栏功能继承,只需重写父类实现接口 isLightStatusBarEnable 即可实现;MIUI V6、Flyme 4.0、Android 6.0 以上:参考UIWidget-StatusBarUtil
  • 快速创建圆角、全圆、按下、不可点击状态的 TextView、EditText、FrameLayout、LinearLayout、RelativeLayout、RadioButton、CheckBox 减少 shape 文件创建设置:参考库UIWidget
  • Activity/Fragment 页面事件交互(支持设置 TAG)
  • 万能适配器(ListView、GridView,RecyclerView):可添加多个 Header 和 Footer
  • Fragment 懒加载,Activity 可见时加载--统一了普通 Fragment 及与 ViewPager 配合滑动的用户可见回调
  • 下拉刷新、上拉加载:支持多种效果的刷新头及自定义刷新头-参考库SmartRefreshLayout

注意事项

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

  • 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 合适的版本避免版本重复

录屏预览

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

开启 GPU 过度绘制检测+GPU 呈现模式分析

鸣谢

License

Copyright 2017 Aries 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.
Support Me
Apps
About Me
Google+: Trinea trinea
GitHub: Trinea