Android之ProgressBar配置文件源码

来源:互联网 发布:美国对外投资数据 编辑:程序博客网 时间:2024/06/05 21:55

本文主要是记录ProgressBar源码的学习过程

先介绍一下学习源码的工具,工欲善其事必先利其器嘛,

Android SDK search,google浏览器插件,启用插件,然后进入官网: 查找ProgressBar



不过这个源码不是我想查看的,我的目标是progressbar那个旋转动画,往下找,发现找了一圈,style里没有想要的,就自定义个个style,继承自ProgressBar,


一路点击 parent,最后看到:

<style name="Widget.ProgressBar">        <item name="indeterminateOnly">true</item>        <item name="indeterminateDrawable">@drawable/progress_medium_white</item>        <item name="indeterminateBehavior">repeat</item>        <item name="indeterminateDuration">3500</item>        <item name="minWidth">48dip</item>        <item name="maxWidth">48dip</item>        <item name="minHeight">48dip</item>        <item name="maxHeight">48dip</item>        <item name="mirrorForRtl">false</item>    </style>
<item name="indeterminateDrawable">@drawable/progress_medium_white</item>就是我要找的了
回到api 官网找源码,在drawble下面

 找到progress_medium_white,很失望啦,源码特别简单,就一个旋转动画的配置

<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"    android:drawable="@drawable/spinner_white_48"    android:pivotX="50%"    android:pivotY="50%"    android:framesCount="12"    android:frameDuration="100" />
以为复制过来就可以直接使用,没想到android:framesCount 找不到,只有自己画一个圆形加载圈圈了drawble/round_progress.xml


<?xml version="1.0" encoding="utf-8"?><rotate  xmlns:android="http://schemas.android.com/apk/res/android"    android:fromDegrees="0"    android:toDegrees="360"    android:pivotX="50%"    android:pivotY="50%"    >    <shape        android:innerRadiusRatio="3"        android:shape="ring"        android:thicknessRatio="10"        android:useLevel="false" >        <gradient            android:startColor="#FFFFFF"            android:centerColor="#FFAABF"            android:endColor="#FFAABF"            android:centerY="0.50"            android:type="sweep"            android:useLevel="false" />    </shape></rotate>
使用

<ProgressBar        style="?android:attr/progressBarStyleLarge"        android:indeterminateDrawable="@drawable/round_progress"        android:layout_width="60dp"        android:layout_height="60dp"        />

顺便总结一下 shape

shape可以绘制矩形,环形以及椭圆,size 高宽设置成一样就是正圆.    solid表示图形的填充色,    stroke则代表边框线,所以两者结合可以实现带边缘的图形            如果是虚线,使用 dashGap    size控制高宽    corners 圆角    gradient 渐变色    白色的圆    <shape xmlns:android="http://schemas.android.com/apk/res/android"        android:shape="oval">        <solid android:color="@android:color/white"/>        <size android:width="22dp"            android:height="22dp"/>        </shape>    从上而下的一个渐变色 ;angle = 0 ,从左往右        <shape android:shape="rectangle">        <gradient android:startColor="#ffffff"            android:endColor="#ffd88d"            android:angle="90"/>        </shape>    带边框的圆角透明图形    <shape >        <stroke android:width="2dp" android:color="#FFAABF"/>        <solid android:color="#00fff000"/>        <corners android:radius="5dp" />    </shape>



结果不重要,重要的是解决问题的过程,比如查看源码的流程


0 0
原创粉丝点击