关于自定义progressBar

布局文件代码:

  1. <ProgressBar
  2. android:id="@+id/progressbar"
  3. android:layout_width="wrap_content"
  4. android:layout_height="wrap_content"
  5. android:indeterminateDrawable="@drawable/progressbar"
  6. />
<ProgressBar 
				android:id="@+id/progressbar"
				android:layout_width="wrap_content"
				android:layout_height="wrap_content"
				android:indeterminateDrawable="@drawable/progressbar"
			/>

此XML文件新建在drawable目录下:文件名为:progressbar

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <animated-rotate
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:pivotX="50%" android:pivotY="50%"
  5. android:fromDegrees="0"
  6. android:toDegrees="360">
  7. <shape
  8. android:shape="ring"
  9. android:innerRadiusRatio="3"
  10. android:thicknessRatio="8"
  11. android:useLevel="false">
  12. <gradient
  13. android:type="sweep"
  14. android:useLevel="false"
  15. android:startColor="#6BD3FF"
  16. android:centerColor="#FF7121"
  17. android:centerY="0.50"
  18. android:endColor="#FFFF00" />
  19. </shape>
  20. </animated-rotate>
<?xml version="1.0" encoding="utf-8"?>
<animated-rotate
   xmlns:android="http://schemas.android.com/apk/res/android"
 android:pivotX="50%" android:pivotY="50%"    
 android:fromDegrees="0"  
 android:toDegrees="360">
    
    <shape 
     android:shape="ring" 
     android:innerRadiusRatio="3"  
  android:thicknessRatio="8" 
  android:useLevel="false">  
  <gradient 
   android:type="sweep" 
   android:useLevel="false"  
   android:startColor="#6BD3FF"         
    android:centerColor="#FF7121"  
   android:centerY="0.50" 
   android:endColor="#FFFF00" />  
 </shape>  
    
</animated-rotate>



至于设置水平进度条的颜色:

  1. <LinearLayout android:gravity="center"
  2. android:orientation="horizontal"
  3. android:padding="10dp"
  4. android:layout_width="fill_parent"
  5. android:layout_height="wrap_content">
  6. <SeekBar android:layout_gravity="center" android:id="@android:id/progress"
  7. android:paddingLeft="8.0dip" android:paddingRight="8.0dip"
  8. android:paddingBottom="4.0dip" android:layout_width="fill_parent"
  9. android:layout_height="wrap_content" android:maxHeight="2.0px"
  10. android:progressDrawable="@drawable/progressbar_drawable" android:minHeight="2.0px"
  11. android:thumb="@drawable/seekbar_thumb" style="?android:attr/progressBarStyleHorizontal" />
  12. </LinearLayout>
	<LinearLayout android:gravity="center"
		android:orientation="horizontal"
		android:padding="10dp" 
		android:layout_width="fill_parent"
		android:layout_height="wrap_content">
		<SeekBar android:layout_gravity="center" android:id="@android:id/progress"
			android:paddingLeft="8.0dip" android:paddingRight="8.0dip"
			android:paddingBottom="4.0dip" android:layout_width="fill_parent"
			android:layout_height="wrap_content" android:maxHeight="2.0px"
			android:progressDrawable="@drawable/progressbar_drawable" android:minHeight="2.0px"
			android:thumb="@drawable/seekbar_thumb" style="?android:attr/progressBarStyleHorizontal" />
	</LinearLayout>

progressbar_drawable.xml如下:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  3. <item android:id="@android:id/background">
  4. <shape>
  5. <corners android:radius="2.0dip" />
  6. <gradient android:startColor="#ff000000" android:centerColor="#ff000000" android:endColor="#ff000000" android:angle="270.0" android:centerY="2.0" />
  7. </shape>
  8. </item>
  9. <item android:id="@android:id/progress">
  10. <clip>
  11. <shape>
  12. <corners android:radius="2.0dip" />
  13. <gradient android:startColor="#ff33b5e5" android:centerColor="#ff33b5e5" android:endColor="#ff33b5e5" android:angle="270.0" android:centerY="2.0" />
  14. </shape>
  15. </clip>
  16. </item>
  17. </layer-list>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="2.0dip" />
            <gradient android:startColor="#ff000000" android:centerColor="#ff000000" android:endColor="#ff000000" android:angle="270.0" android:centerY="2.0"  />
        </shape>
    </item>
    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <corners android:radius="2.0dip" />
                <gradient android:startColor="#ff33b5e5" android:centerColor="#ff33b5e5" android:endColor="#ff33b5e5" android:angle="270.0" android:centerY="2.0"  />
            </shape>
        </clip>
    </item>
</layer-list>


另外附上drawable的xml文件的一些属性:


 android:shape=["rectangle" | "oval" | "line" | "ring"]
shape的形状,默认为矩形,可以设置为矩形(rectangle)、椭圆形(oval)、线性形状(line)、环形(ring)
下面的属性只有在android:shape="ring时可用:
android:innerRadius 尺寸,内环的半径。
android:innerRadiusRatio 浮点型,以环的宽度比率来表示内环的半径,
例如,如果android:innerRadiusRatio,表示内环半径等于环的宽度除以5,这个值是可以被覆盖的,默认为9.
android:thickness 尺寸,环的厚度
android:thicknessRatio 浮点型,以环的宽度比率来表示环的厚度,例如,如果android:thicknessRatio="2",
那么环的厚度就等于环的宽度除以2。这个值是可以被android:thickness覆盖的,默认值是3.
android:useLevel boolean值,如果当做是LevelListDrawable使用时值为true,否则为false.


<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    
    <!--
      圆角
      android:radius   整型 半径
      android:topLeftRadius   整型 左上角半径
      android:topRightRadius   整型 右上角半径
      android:bottomLeftRadius 整型 左下角半径
      android:bottomRightRadius 整型 右下角半径
     -->
     <corners  
        android:radius="8dp"
        android:topLeftRadius="5dp"
        android:topRightRadius="15dp"
        android:bottomLeftRadius="20dp"
        android:bottomRightRadius="25dp"  
        />
     
     <!--
        渐变色
        android:startColor  颜色值 起始颜色
        android:endColor    颜色值 结束颜色
        android:centerColor 整型   渐变中间颜色,即开始颜色与结束颜色之间的颜色

android:angle       整型   渐变角度(PS:当angle=0时,渐变色是从左向右。 然后逆时针方向转,当angle=90时为从下往上。angle必须为45的整数倍)
  android:type        ["linear" | "radial" | "sweep"] 渐变类型(取值:linear、radial、sweep)
                            linear 线性渐变,这是默认设置
                            radial 放射性渐变,以开始色为中心。
                            sweep 扫描线式的渐变。
android:useLevel   ["true" | "false"] 如果要使用LevelListDrawable对象,就要设置为true。设置为true无渐变。false有渐变色
android:gradientRadius 整型 渐变色半径.当 android:type="radial" 时才使用。单独使用 android:type="radial"会报错。
       android:centerX     整型   渐变中心X点坐标的相对位置
       android:centerY   整型   渐变中心Y点坐标的相对位置
    -->
    <gradient
        android:startColor="#FFFF0000"
        android:endColor="#80FF00FF"
        android:angle="45"
        /> 
        
    <!--
          内边距,即内容与边的距离 
          android:left   整型 左内边距
          android:top   整型 上内边距
          android:right   整型 右内边距
          android:bottom 整型 下内边距
      -->
     <padding 
         android:left="10dp"
         android:top="10dp"
         android:right="10dp"
         android:bottom="10dp"
         />
     
    <!-- 
       size 大小
       android:width 整型 宽度
       android:height 整型 高度
    -->
    <size
        android:width="600dp"
        />
    
    <!--
        内部填充
        android:color 颜色值 填充颜色
    -->
    <solid 
        android:color="#ffff9d77"
        />
    
     <!--
         描边
         android:width 整型 描边的宽度
         android:color 颜色值 描边的颜色
         android:dashWidth 整型 表示描边的样式是虚线的宽度, 值为0时,表示为实线。值大于0则为虚线。
         android:dashGap   整型 表示描边为虚线时,虚线之间的间隔 即“ - - - - ”



gradient里的属性没什么好介绍的, 这里主要是shape.
下列属性只在android:shape=”ring”时使用:
android:innerRadiux
尺寸值,它用尺寸值或尺寸资源指定圆环内部的半径(指中间的圆孔的半径)。

android:innerRadiusRatio
浮点值,它用圆环宽度的比率来表示内部圆环的半径。例如,如果android:innerRadiusRatio=”5”,那么内部半径就等于圆环的宽度除以5。这个值会被android:innerRadius的值覆盖。默认是9。

android:thickness
尺寸值,它用一个尺寸值或尺寸资源来定义圆环的厚度。

android:thicknessRatio
浮点值。它用圆环宽度的比率来表示圆环的厚度。例如,如果android:thicknessRatio=”2”,那么厚度就等于圆环的宽度除以2。这个值会被android:innerRadius覆盖。默认值是3。也就是说这个值设置的越大圆环就越细了。

android:useLevel
布尔值,如果这个形状要用于LevelListDrawable对象,那么就设置为true。通常应该设置为false或者让形状不可见。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值