美文网首页安卓自定义VIEW学习区特效
一个简单好用的LoadingDialog

一个简单好用的LoadingDialog

作者: xiasuhuei321 | 来源:发表于2016-11-06 19:24 被阅读2774次

    写在前面

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

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

    使用方法与效果图

    展示一个loading dialog:

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

    效果图:


    loading.gif

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

    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()关闭它:

    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
    对了,最近我的博客挂了,周末看下怎么回事吧,我去。
    其实我还是简书更的比较勤。。。不过象征性的挂一下吧。。。

    相关文章

      网友评论

      • 4d226614f116:请问一下,如何点击Dialog外面 Dialog 停止呢,我做了一个加载中,一直在转,写了close,Dialog就不显示了
      • 贝克汉姆CC:我在rx里调用这个dialog,loadSuccess之后跳转到另一个activity的时候就会出现,dialog未被关闭导致崩溃,调用close就不出现success的效果了 请问怎么办
      • 3674d0183b56:很厉害,感谢分享
      • junerver:有一个小问题,设置了dialog的大小,怎么设置提示文字的大小呢
        xiasuhuei321:@junerver 已修复
        xiasuhuei321:@junerver 我考虑不周,下个版本修复
      • newszhu:赞,收入控件库,谢谢
      • 请叫我大苏:6666,过段时间自己来试试,先mark
        xiasuhuei321:@请叫我大苏 :wink: 光马克不行啊,还要点上面的心
      • 小小小胡:github上有一个比较成熟的dialog,但就是cpu占用比较大,不知道你这个咋样?学习了你的这方法
        小小小胡:@xiasuhuei321 好几天没来简书啦,那个项目地址是 https://github.com/yankai-victor/Loading,真的有点占资源!!
        xiasuhuei321:@莫沫子 这个还不知道,还没测。你说的比较成熟的是啥?俺去瞅瞅
      • luo2016:顶一个
      • 9844281fb1a8:不错呦,😀😀😀
      • coco猫:有cancel或者dismiss之类的方法吗
        xiasuhuei321:@coco猫 你问的是不是关闭dialog的方法?我这close就是,好像我没写清楚,已改。
        xiasuhuei321:@coco猫 没,因为我这个设计出来就是你要用必须new一个出来。。不然的话有些东西不怎么好处理
      • c37d344afd22:66666,我对自定义view已经入门到放弃了
        xiasuhuei321:@爱小丽 不能放弃治疗啊!

      本文标题:一个简单好用的LoadingDialog

      本文链接:https://www.haomeiwen.com/subject/polnuttx.html