zoukankan      html  css  js  c++  java
  • 自己定义圆形进度条

    在工作中遇到一个问题,在跳转到一个有多页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。


  • 相关阅读:
    HDU 2844 Coins(多重背包)
    HDU 4540 威威猫系列故事——打地鼠(DP)
    Codeforces Round #236 (Div. 2)
    FZU 2140 Forever 0.5
    HDU 1171 Big Event in HDU(DP)
    HDU 1160 FatMouse's Speed(DP)
    ZOJ 3490 String Successor
    ZOJ 3609 Modular Inverse
    ZOJ 3603 Draw Something Cheat
    ZOJ 3705 Applications
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8429997.html
Copyright © 2011-2022 走看看