Android之ProgressBar配置文件源码

本文主要是记录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>



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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值