Android 自定义控件之 ZProgressBar
Lhuajin
7年前
<h2>前言</h2> <p>最近我的个人项目中,有一个页面需要大量用到 ProgressBar,但是每个 ProgressBar 的颜色是不确定的。</p> <p>那么原生 ProgressBar 就无法满足我的需求了,因为原生 ProgressBar 的样式是根据 Drawable 来的,那么多颜色,岂不是需要创建 N 个 Drawable 文件了?并且该 ProgressBar 在 AndroidN 之前并没有动画效果,综上所述,索性去 GayHub 看看有没有好用的裤子。</p> <p>看了一圈,发现有一个裤子挺好,继承自 LinearLayout 实现,很强大,代码也多,虽然能满足我的需求,但是有些过剩啊。</p> <p>我的需求也不是很大,其实直接继承自 ProgressBar 就可以实现,不如自己造个轮子吧,既然 ProgressBar 是通过 Drawable 来指定样式的,那么我就可以直接在代码中生成 layout-list 和 shape 来实现一个可动态配置样式的 ProgressBar 了。</p> <p>废话了一圈,阐述了下为什么有这个自定义控件。写到这,发现自己废话可真多啊。。。看这些话的时间都能理解完代码了。。。因为代码很简单、也非常少。。。</p> <h2>预览</h2> <p><img src="https://simg.open-open.com/show/fba556c30be4cf3c16154ba9eba12503.gif"></p> <h2>使用</h2> <p>XML 中:</p> <pre> <code class="language-xml"><com.github.airsaid.zprogressbar.widget.ZProgressBar android:id="@+id/progressBar" android:layout_width="match_parent" android:layout_height="20dp" android:max="100" app:zpb_backgroundColor="#999999" app:zpb_duration="300" app:zpb_progressColor="@color/colorAccent" app:zpb_radius="16dp"/></code></pre> <p>代码中:</p> <pre> <code class="language-xml">ZProgressBar mProgressBar = (ZProgressBar) findViewById(R.id.progressBar); mProgressBar.setAnimProgress(50);</code></pre> <h2>属性&方法</h2> <table> <thead> <tr> <th>属性名</th> <th>java方法</th> <th>作用</th> </tr> </thead> <tbody> <tr> <td>zpb_backgroundColor</td> <td>setDefBackgroundColor(int color)</td> <td>设置背景颜色</td> </tr> <tr> <td>zpb_progressColor</td> <td>setProgressColor(int color)</td> <td>设置进度颜色</td> </tr> <tr> <td>zpb_radius</td> <td>setRadius(float radius)</td> <td>设置背景弧度</td> </tr> <tr> <td>zpb_duration</td> <td>setDuration(int duration)</td> <td>设置动画时长</td> </tr> </tbody> </table> <p> </p> <p> </p> <p> </p>