• Stars
    star
    182
  • Rank 211,154 (Top 5 %)
  • Language
    Java
  • Created over 8 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

极简使用的解耦Loading组件

LoadingBar

English Document

LoadingBar已升级2.01.x版本无法迁移2.0,但1.x会持续维护

下载示例

Gralde引入

implementation 'com.dyhdyh.loadingbar2:loadingbar:2.0.1'

简单用法(默认样式)

LoadingView

//以View的形式显示loading
//这里的parent需要是可覆盖的布局,如果传的不是可覆盖的布局,会一直随着层级往上找
//FrameLayout/RelativeLayout/ConstraintLayout/DrawerLayout/CoordinatorLayout/CardView
LoadingBar.view(parent).show();

//需要跟show方法传的是同一个parent 才能正确取消
LoadingBar.view(parent).cancel();

LoadingDialog

//以Dialog的形式显示Loading
//注意这里context不能用ApplicationContext
LoadingBar.dialog(context).show();

//取消Dialog
//需要跟show方法传的是同一个context 才能正确取消
LoadingBar.dialog(context).cancel();

进阶用法

LoadingView

LoadingBar.view(parent)
        //通过工厂设置样式
        //.setFactory(new CustomViewFactory())
        //通过View设置样式
        //.setFactoryFromView(view)
        //通过布局ID设置样式
        .setFactoryFromResource(R.layout.layout_custom)
        //携带参数
        .extras(new Object[]{})
        .show();

//通过工厂设置样式
public class CustomViewFactory implements LoadingFactory<ViewGroup, View> {

    /**
     * 工厂类的标识符
     * 在cancel()之前多次调用show()时,当key相同时不会重新调用onCreate
     * @return
     */
    @Override
    public String getKey() {
        return getClass().getName();
    }

    @Override
    public View onCreate(ViewGroup parent) {
        //这里return的View就是Loading的样式
        return LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_custom, parent, false);;
    }

    @Override
    public void updateStatus(Object[] extras) {
    	//每次调用show会回调这里  还有携带的参数
    }
}

LoadingDialog

LoadingBar.dialog(context)
        //通过工厂设置样式
        //.setFactory(new CustomDialogFactory())
        //通过View设置样式
        //.setFactoryFromView(view)
        //通过布局ID设置样式
        .setFactoryFromResource(R.layout.layout_custom)
        //携带参数
        .extras(new Object[]{})
        .show();

//通过工厂设置样式
public class CustomDialogFactory implements LoadingFactory<Context, Dialog> {
    /**
     * 工厂类的标识符
     * 在cancel()之前多次调用show()时,当key相同时不会重新调用onCreate
     * @return
     */
    @Override
    public String getKey() {
        return getClass().getName();
    }

    @Override
    public Dialog onCreate(Context params) {
        //这里return的dialog就是Loading的样式
        return new AlertDialog.Builder(params)
                .setView(R.layout.layout_custom)
                .setCancelable(false)
                .create();
    }

    @Override
    public void updateStatus(Object[] extras) {
    	//每次调用show会回调这里  还有携带的参数
    }
}

如果是通过匿名内部类创建的FactorygetKey()需要自定义以保证可以区分样式,例如用layoutId区分

private LoadingFactory<ViewGroup, View> createViewFactoryFromResource(@LayoutRes int layoutId) {
        return new LoadingFactory<ViewGroup, View>() {

            @Override
            public String getKey() {
                return String.format(Locale.getDefault(), "ViewFactoryFromResource@%d", layoutId);
            }

            @Override
            public View onCreate(ViewGroup parent) {
                return LayoutInflater.from(parent.getContext()).inflate(layoutId, parent, false);
            }

            @Override
            public void updateStatus(Object[] extras) {

            }
        };
    }

其它API

ControllerHandler

//使用ControllerHandler可以更进一步定制
//下面的例子演示了 更换LoadingView的Parent查找策略
LoadingBar.view(loadingContainer)
        .setControllerHandler(new ControllerHandler() {
            @Override
            public void handle(LoadingController controller) {
                //调整Parent查找策略
                if (controller instanceof LoadingViewController) {
                    ((LoadingViewController) controller).setParentStrategy(new SimpleParentStrategy());
                }
            }
        }).show();

手动释放

当调用cancel()的时候,LoadingBar会自动释放,如果有不正常cancel的情况,可以调用release手动释放。

LoadingBar.release();

可以通过getPoolCount查看当前没有释放的资源数量。

LoadingBar.getPoolCount();

截图

More Repositories

1

magnetW

[已失效,不再维护]
JavaScript
11,851
star
2

CountDownTimerSupport

Android倒计时器,支持开始倒计时、暂停倒计时、继续倒计时、停止倒计时、重新倒计时
Java
196
star
3

MediaMetadataRetrieverCompat

多媒体元数据兼容方案 - 支持获取图片、视频、音频文件的媒体信息、视频图片缩略图
Java
122
star
4

github-tags

给Github项目添加标签的Chrome插件,支持按标签搜索,支持数据云同步
CSS
36
star
5

ItemTouchMoveHelper

RecyclerView的Item滑动触摸辅助类,可以用来实现微信里的表情商店预览功能
Java
32
star
6

AssetFile

像File一样操作Assets资源 - https://blog.csdn.net/aa464971/article/details/82740299
Java
20
star
7

ActivityManager

一个管理所有Activity的库,可以任意处关闭任意Activity
Java
20
star
8

PanelKeyboardCompat

在XhsEmoticonsKeyboard的基础上进行了改进并提高了兼容性和易用性
Java
15
star
9

GlidePlus

基于glide与android-gif-drawable对Glide处理Gif进行加强
Java
12
star
10

keystore-browser

查看keystore信息和apk签名信息的图形化工具,支持Windows、Mac
JavaScript
11
star
11

webp-spring

webp转换器
Java
11
star
12

Chrome-Plugin

开发者必备的一些Chrome浏览器插件
8
star
13

retrofit-rxjava-okhttp

Retrofit-RxJava-OkHttp二次封装
Java
8
star
14

YouTubeDownload

分享一些下载YouTube视频的网站和工具
8
star
15

AndroidViewHelper

View和RecyclerView的辅助类
Java
7
star
16

SimpleRecyclerAdapters

简易的RecyclerView Adapter
Java
5
star
17

PreRecyclerView

HeaderView、加载更多的RecyclerView
Java
5
star
18

simple-wx-push

简易版推送消息到自己微信
JavaScript
5
star
19

SmartPay

高扩展性的Android聚合支付
Java
5
star
20

instagram-login-android

基于OAuth API对Instagram的授权登录封装成SDK
Java
4
star
21

okdownload-ext

收集okdownload一些问题,用于快速解决使用okdownload时的一些问题
Java
4
star
22

Android-Studio-Plugin

Android Studio上一些实用的插件 - http://blog.csdn.net/aa464971/article/details/70325399
3
star
23

RxUmeng

将友盟sdk封装成RxJava的调用方式
Java
2
star
24

xiandanin.github.io

https://xiandan.in/
HTML
2
star
25

SpringSample

Spring HelloWorld - https://blog.csdn.net/aa464971/article/details/78250259
Java
2
star
26

plugin-wifi-password

查看连接过的wifi密码
Java
2
star
27

FrescoSample

Fresco的官方例子,比原工程更好编译
Java
2
star
28

CameraX

CameraX源码
Java
2
star
29

ffmpeg-android-build

编译后的ffmpeg-android
C
2
star
30

android-fileexplorer-nodejs

简易版的导出Android设备文件的跨平台客户端
JavaScript
2
star
31

SVGShapeLayout

可以将任何View显示成SVG的形状,支持描边、阴影
Java
2
star
32

AnyCost

全局耗时计算器,可以在任何地方计算耗时
Kotlin
1
star
33

libyuv-jni

libyuv的jni实现
C++
1
star
34

webp-java

webp命令行java版
Java
1
star
35

SimpleAudioPlayer

基于系统播放器封装的全局音频播放器
Java
1
star
36

SquareGridLayout

微博九宫格
Java
1
star
37

pdf2ppt

nodejs pdf转ppt
JavaScript
1
star
38

OpenSourceLicense4Wechat

帮助你选择开源许可证的微信小程序
JavaScript
1
star
39

AndroidCompat

Android API的适配
Java
1
star
40

ViewVisibleHelper

用来计算View可见程度,还提供了OnScrollListener,可用于列表自动播放
Java
1
star
41

CameraPermissionCompat

Android相机权限检测兼容
Java
1
star
42

SplashCompatSample

启动页适配例子 - https://blog.csdn.net/aa464971/article/details/86692198
Java
1
star
43

RangeTimelineView

Android范围选择器
Java
1
star