LJ的Blog

学海无涯苦做舟

0%

一个简单好用的LoadingDialog

写在前面

还记得以前在网上看到过一个LoadingDialog,感觉还挺不错的,可惜只有一个Loading,配套的错误和正确的反馈都没,一直觉得挺遗憾的,今天花了一些时间把他补全了。今天上多说找了下,找到了原来我的评论,放上原作者的文章地址。我做的事就是增强LoadingDialog的功能,新增两个自定义View。今天收到了两位前辈不错的建议,后续更新即将到来~

感谢小路同学指出我后面反馈的圆的方向和之前的方向不一致的情况,已修复,因为截gif怪麻烦的,图就不改了。。。

使用方法与效果图

展示一个loading dialog:

1
2
3
new LoadingDialog(this)
.setLoadingText("加载中...")//设置loading时显示的文字
.show();

效果图:
loading.gif

展示一个loading dialog并在合适的时机返回正确或者错误的反馈给用户:

1
2
3
4
5
6
7
8
9
10
11
12
13
LoadingDialog ld = new LoadingDialog(this);
ld.setLoadingText("加载中")
.setSuccessText("加载成功")//显示加载成功时的文字
//.setFailedText("加载失败")
.setInterceptBack(intercept_back_event)
.setLoadSpeed(speed)
.setRepeatCount(repeatTime)
.setDrawColor(color)
.show();

//在你代码中合适的位置调用反馈
ld.loadSuccess();
//ld.loadFailed();

效果图:

loadSuccess.gif
gif

还是同样的蜜汁小圆点。。。因为不摸他 加载结束他就不录了,辣鸡AS。。。

如果你不想要这个动态画出来的效果,你也可以通过closeSuccessAnim()或者closeFailedAnim()关闭它:

1
2
3
4
5
6
7
8
9
LoadingDialog ld = new LoadingDialog(this);
ld.setLoadingText("加载中")
.setSuccessText("加载成功")
.setInterceptBack(intercept_back_event)
.setLoadSpeed(speed)
.closeSuccessAnim()
.setDrawColor(color)
.setRepeatCount(repeatTime)
.show();

fail_no_anim.gif

提供你使用的一些方法:

  • setSize(int size):可以通过这个来设置弹框的尺寸,首先我这要求长宽相等的,所以只给一个参数设置他的尺寸就行了。再者我在自定义View里也会把不同的长宽处理成一样的。在项目中有一个SizeUtils,在设置尺寸的时候注意用这个工具将dp转换成px。
  • show():展示你设置的loadingDialog
  • close():关闭动画释放一些资源,关闭dialog
  • setLoadingText(String msg):设置Loading时的文字
  • setSuccessText(String msg):设置Loading成功时文字
  • setFailed(String msg):设置Loading失败时的文字
  • loadSuccess():调用这个方法展示一个成功的反馈
  • loadFailed():调用这个方法展示一个失败的反馈
  • closeSuccessAnim():关闭成功反馈的动态绘制
  • closeFailedAnim():关闭失败反馈的动态绘制
  • setInterceptBack(boolean interceptBack):是否拦截用户back,如果设置为true,那么一定要调用close(),或者loadSuccess()、loadFailed()这二者中的一个,不然出现无限loading的情况我相信你不会想看到的。
  • getInterceptBack():返回dialog是否拦截的布尔值
  • setLoadSpeed(Speed speed):参数是一个枚举,一共两个值,SPEED_ONE是比较慢的,SPEED_TWO比前一个快一点,为毛不再加?处理起来比较麻烦…
  • setDrawColor(int color):可以改变绘制的颜色,圆和里面的勾啊,叉啊的颜色,不建议你用,不一定好看。
  • setRepeatCount(int count):设置动态绘制的次数,比如你设置了值为1,那么除了加载的时候绘制一次,还会再绘制一次。如果你有这个需要,可以设置他的重绘次数。
  • setShowTime(long time):设置反馈结果窗口的展示时间,默认为1秒,如果有绘制过程,则从绘制完成之后算。

目前还有一些没完善,在后续的更新中搞定吧。
github地址:https://github.com/ForgetAll/LoadingDialog

如何在你的项目中使用

如何使用

Step 1. 把这玩意加到你的build.gradle里:

allprojects {
    repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}

Step 2. 加上这个依赖

dependencies {
        compile 'com.github.ForgetAll:LoadingDialog:v1.0.1'
}

最后我的个人博客:
http://xiasuhuei321.com
对了,最近我的博客挂了,周末看下怎么回事吧,我去。
其实我还是简书更的比较勤。。。不过象征性的挂一下吧。。。