自定义 Android loading 加载框。
来源:互联网 发布:淘宝微淘话题在哪里找 编辑:程序博客网 时间:2024/05/01 02:52
原创文章,转载请注明出处。
去年写了一个加载框,一直放在那,今年无意中看到这个,突然觉得还可以,无意中撞脸Win10的加载框(后者脸皮),写个博客,分享出来吧,先来看看效果吧。
怎样使用
第一步:将maven { url ‘https://jitpack.io’ }加入的你项目根目录的build.gradle
allprojects { repositories { maven { url 'https://jitpack.io' } } }
第二步:添加依赖
dependencies { compile 'com.github.wangzaizhou:progressbarlibrary:v1.0' }
第三步:使用
PgDialog pd=PgDialog.newInstance(context); if(!pd.isShowing()){ pd.show("正在下载中...");//显示加载框 pd.setData(10);//百分比 } pd.dismiss();//取消加载框
下面来看看如何去实现这个效果:
1. 绘制最主要的部分,下面通过自定义view的方式去绘制中间的加载框。
安卓view的绘制过程大体涉及三大过程:
- 测量 (onMeasure)
- 布局(onLayout)
绘制(onDraw)
具体过程请读者自行百度,在此不再赘述,完整代码会在本文结尾贴出,有兴趣的可以看看,以下大体讲讲思路。
新建 ProgressBarView继承View:
public class ProgressBarView extends View {}
我们需要重写View的三个构造方法。
如果你想在xml中使用自定义view,记得重写第二个或第三个构造方法。
然后初始化画笔、画布等。
开始绘制背景,直接一个圆角矩形,画笔颜色选白色,带上透明度,抗锯齿。
RectF rectF = new RectF(0, 0, canvas.getWidth(), canvas.getHeight());canvas.drawRoundRect(rectF, 10, 10, paintm);
背景绘制完了,接下来就是绘制小圆点了。安卓绘制圆有个Canvas.drawCircle(float cx, float cy, float radius, Paint paint)方法,
看下要传的四个参数:
- float cx 要绘制的圆的中心的x坐标
- float cy 要绘制的圆的中心的y坐标
- float radius 要绘制的圆的半径
Paint paint 画笔
绘制一个圆点很简单,接下来我们要绘制多个圆点。并让它们在同一个圆周上。
接下来确定一个圆心,并设定这个圆的半径为R,我们在这个圆的圆周上绘制小圆点,刚才说了安卓绘制圆的方法drawCircle;为了保证小圆点在圆周上,只要给drawCircle传的cx、cy符合(cx)²+(cy)²=R²就可以。这样我们只要改变cx,就可以得到一个cy。并且绘制的小圆点在同一个圆周上。
让小圆点动起来,调用安卓的invalidate();方法,改变cx就可了。
接下来就是绘制文字了,比较简单了, canvas.drawText;
2. 接下来用AlertDialog去加载写好得view,具体的代码中已经写好了。
代码地址
阅读全文
0 0
- 自定义 Android loading 加载框。
- Android 帧动画实现自定义loading加载框
- Android 自定义加载效果视图(loading)控件
- 【Android实战】使用帧动画实现自定义loading加载布局
- Android自定义Loading
- android 自定义loading动画
- Android 自定义loading
- Android loading Dialog 自定义
- android自定义加载框
- android自定义加载框
- android自定义加载框
- Android 自定义加载框
- Android之加载视图Loading
- android_自定义Loading框
- 如何做自定义Loading加载其它swf
- loading加载及自定义view思考
- 自定义View实现loading动画加载
- android loading界面 & 自定义ProgressDialog
- rails中 yeild 与 content_for之间的区别
- Java微信公众平台开发之群发接口(高级群发)
- Spring学习,IOC的类型
- OpenCV+Python环境搭建
- 「Pillow/PIL」Image Module
- 自定义 Android loading 加载框。
- 面试算法
- SpringMVC和Struts2的区别
- Java 多线程 学习笔记 线程的停止
- 洛谷P1865 A%B Problem
- PyTorch关于RNN序列数据的pack_pad处理
- Android函数响应式编程——必学的RxJava条件操作符和布尔操作符all、contains、isEmpty、amb、defaultIfEmpty
- 设计模式学习之工厂模式
- Linux printf特殊输出