概述
MaterialProgressDrawable,一个Material风格的圆形滚动条,样式比较百搭,在android.support.v4.widget
包中,不过是私有的,但是,好东西怎么能埋没了呢,我们直接把它复制出来就可以用了,哇哈哈~~~(找不到就点我 - -)
可以做什么?
MaterialProgressDrawable大概可以实现以下效果:
- 指示进度从0~100%(当然,数字是不自带的)
- 不停转圈圈 - -
- 官方已经实现的下拉刷新(SwipeRefreshLayout)
简单效果
Demo很简单,想看代码就点我
使用
MaterialProgressDrawable其实就是个Drawable,所以他需要一个载体,一般可以把它设置到一个ImageView上。
<code class="language-java hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">ImageView imageView = ……
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//创建</span>
MaterialProgressDrawable progress = = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> MaterialProgressDrawable(context,imageView);
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//设置到imageView </span>
imageView.setImageDrawable(progress);</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li></ul>
还有很多属性可以设置,看下面的列表。
常用方法
返回值 | 方法和描述 |
---|
void | updateSizes(int size) 设置大小,可以选LARGE、DEFAULT |
void | showArrow(boolean show) 设置是否显示箭头 |
void | setArrowScale(float scale) 设置箭头缩放大小,0f~1f |
void | setStartEndTrim(float startAngle, float endAngle) 设置进度条的开始和结尾,也就是长度,范围0f~1f,比如setStartEndTrim(0f,0.8f) |
void | setProgressRotation(float rotation) 设置旋转角度,0f~1f |
void | setBackgroundColor(int color) 设置背景颜色 |
void | setColorSchemeColors(int… colors) 设置进度条的颜色,可以是多种颜色,转一圈换一个 |
void | setAlpha(int alpha) 设置透明度,0-255,注意:默认一开始透明度是0 |
void | start() 开始转圈动画 |
void | stop() 终止进行中的动画,并且将进度条长度归零 |
int | getAlpha() 获取当前透明度 |
int | getIntrinsicHeight() 获取Drawable高度 |
int | getIntrinsicWidth() 获取Drawable宽度 |