自定义圆形进度条

在工作中遇到一个问题,在跳转到一个有多页Fragment数据的Activity的时候,Activity的打开速度很慢。于是就想到了添加一个loading进度条,让用户知道正在加载数据,而不至于认为应用无响应。

自定义进度条可以用三种方法实现。可以自定义动画,像帧动画那样实现loading旋转加载的效果。可以使用一张图片,实现自定义。也可以通过颜色实现自定义。

1.自定义动画实现

在res/anim/loading.xml下定义的xml文件

<?xml version="1.0" encoding="UTF-8"?>  

<animation-list android:oneshot="false"  

xmlns:android="http://schemas.android.com/apk/res/android">  
  <item android:duration="150" android:drawable="@drawable/loading_01" />  
  <item android:duration="150" android:drawable="@drawable/loading_02" />  
  <item android:duration="150" android:drawable="@drawable/loading_03" />  
  <item android:duration="150" android:drawable="@drawable/loading_04" />  
  <item android:duration="150" android:drawable="@drawable/loading_05" />  
  <item android:duration="150" android:drawable="@drawable/loading_06" />  
  <item android:duration="150" android:drawable="@drawable/loading_07" />  
</animation-list>

2.使用图片进行自定义,在res/drawable/loading.xml文件

<rotate xmlns:android="http://schemas.android.com/apk/res/android"  

    android:drawable="@drawable/spinner_black_16"  
    android:pivotX="50%"  
    android:pivotY="50%"  
    android:fromDegrees="0"  
    android:toDegrees="360" />

3.通过颜色进行自定义,在res/drawable/loading.xml文件

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

在使用的时候

<ProgressBar
        android:id="@+id/loading"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:indeterminateDrawable="@drawable/loadingl" 
        />

注意,使用动画方式的和使用图片颜色方式的,要注意区别是在哪个资源文件夹下的,drawable和anim文件夹是不一样的。

对于使用颜色方式自定义的loading做一下说明:

fromDegrees:旋转动画 开始的角度

toDegrees:旋转动画结束的角度
pivotX:动画相对于控件的 x 坐标的位置
pivotY:动画相对于控件的 y 坐标的位置
innerRadiusRatio:以环的宽度比率来表示内环的半径,可以被innerRadiu覆盖
innerRadiu:指定内环半径
thickness:指定环的厚度
thicknessRatio:以环的宽度比率来表示环的厚度,可以被thickness覆盖
shape:控件形状:rectangle(矩形),oval(椭圆),line(线条), ring(环)。默认矩形
gradient设置填充的渐变色  
        startColor:起始颜色
        centerColor:中间渐变的颜色
        endColor:结束颜色
        angle设置渐变的角度,仅当渐变类型为线性渐变时有效。
                        默认0值为水平向右,其他角度以逆时针旋转为准,例如设置为90则是自下而上,
                        设置为270自上而下,以此类推。注意:必须是45的倍数。
        centerX、centerY两个属性用于设置渐变的中心点位置,
                        仅当渐变类型为放射渐变时有效,类型为分数或小数,不接受Dimension。
                        默认值是0.5,有效值是0.0~1.0,超出该范围后会看不出渐变效果。
     useLevel属性通常不使用。该属性用于指定是否将该shape当成一个LevelListDrawable来使用,默认值为false。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值