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>