Android Studio通过style和layer-list实现自定义进度条

1 style

1.1 sytles.xml简介

style表示样式,Android的样式在“res/values/styles.xml”中定义。可以在Android Studio中对该文件进行编辑。以下为Android Studio自动生成的styles.xml文件的内容。


    
    

从以上内容中可以看出,styles.xml文件中包含一个根元素,具体的每种样式是通过根元素下的自标签

以上代码中,添加了一个名为StyleProgressBarMini”的样式,该样式继承自“@android.style/Widget.ProgressBar.Horizontal”,即水平进度条。也就是说,自定义的进度条类型为水平型。关于进度条控件的介绍请参考《Android Studio中使用进度条控件》。android:maxHeightandroid:minHeight指定了进度条的最大高度和最小高度;android:indeterminateOnly表示进度条是否显示数字进度;android:progressDrawable指定了自定义进度条中显示的图像,该值为“@drawable/shape_progressbar_mini”代表了@drawable/shape_progressbar_mini.xml文件,该文件的创建和编辑在“2 layer-list”中介绍。

2 layer-list

使用Drawable资源的根元素layer-list可以将多个drawable按照顺序层叠在一起显示。使用layer-list可以自定义进度条的背景、当前进度和第二进度。

2.1 创建layer-list文件

Android Studio项目中添加layer-list文件的方法请参见《Android Studio中创建Selector文件的方法》。唯一不同的是在Root element:”中输入“layer-list”,在“File name”中输入“shape_progressbar_mini”,与“1.2 创建自定义进度条的样式”中提到的progressDrawable属性值相同。

Android Studio通过style和layer-list实现自定义进度条_第1张图片 

1 创建layer-list 文件

2.2 编辑layer-list文件

layer-list文件中,标签表示一个drawable。添加一个drawable的代码如下


    
        
        
    

其中,标签下的标签用来定义集合形状,默认形状为矩形。而下的标签指定了该形状的圆角,radius属性指定了圆角的半径,半径值越大,说明角越圆;标签指定了形状的渐变,android:angle指定了渐变的角度,0表示从上到下,90表示从左到右;android:startColorandroid:endColor指定了渐变的起始颜色和结束颜色;android:centerY指定了渐变中心的相对位置,该值为0~1。以上代码定义了一个用于表示进度条背景的drawable

接下来定义进度条的当前进度和第二进度。


    
        
            

            
        
    


    
        
            
            
        
    

3 shape

使用Drawable资源的根元素shape来定义进度条的边框。

3.1 创建shape文件

创建的方法与2.1 创建layer-list文件”中提到的方法相同,只是将“Root element:”设置为shape

3.2 编辑shape文件


    
    
    

以上代码中,android:shape属性指定了shape的形状,即矩形;标签用来设置形状的填充颜色,该标签只有一个属性android:color用来指定填充的颜色;标签用来设置圆角,属性android:radius指定了圆角的半径;标签设置内容与形状边界的内间距,android:bottomandroid:leftandroid:rightandroid:top分别表示下、左、右和上内间距。

4 创建自定义进度条

可以使用以上创建的stylelayer-list以及shape来自定义进度条。


其中,style属性指定了在“1 style”中定义的风格;android:background属性指定了在“3 shape”中创建的shape

自定义进度条运行效果如图2所示。

 

2 自定义进度条

你可能感兴趣的:(Android Studio通过style和layer-list实现自定义进度条)