ProgressBar的样式设定其实有两种方式如下:
Widget.ProgressBar.Horizontal
Widget.ProgressBar.Small
Widget.ProgressBar.Large
Widget.ProgressBar.Inverse
Widget.ProgressBar.Small.Inverse
Widget.ProgressBar.Large.Inverse
使用的时候可以这样:style=”@android:style/Widget.ProgressBar.Small”,另外还有一种方式就是使用系统的attr,下面的方式是系统的style:
style=”?android:attr/progressBarStyle”
style=”?android:attr/progressBarStyleHorizontal”
style=”?android:attr/progressBarStyleInverse”
style=”?android:attr/progressBarStyleLarge”
style=”?android:attr/progressBarStyleLargeInverse”
style=”?android:attr/progressBarStyleSmall”
style=”?android:attr/progressBarStyleSmallInverse”
style=”?android:attr/progressBarStyleSmallTitle”
2 | android:id= "@+id/progressBar1" |
3 | style= "?android:attr/progressBarStyleHorizontal" <==> style= "@android:style/Widget.ProgressBar.Horizontal" |
4 | android:layout_width= "match_parent" |
5 | android:layout_height= "wrap_content" /> |
ProgressBar中几个
1.重要方法:
setProgress() // 设置当前进度值
incrementProgressBy() // 设置进度增量
2.常用属性:
progressDrawable // 设置进度条的轨道的绘制情况
indeterminateDrawable // 设置绘制不显示进度的进度条的Drawable对象
自定义ProgressBar不确定模式进度条
实现方式:
3 | android:id= "@+id/progressBar3" |
4 | style= "@android:attr/progressBarStyleLarge" |
5 | android:layout_width= "wrap_content" |
6 | android:layout_height= "wrap_content" |
7 | android:layout_marginTop= "10dp" /> |
10 | style= "@style/mProgress_circle" |
11 | android:layout_width= "wrap_content" |
12 | android:layout_height= "wrap_content" |
13 | android:layout_marginTop= "10dp" /> |
16 | style= "@style/mProgress_circle_shape_loading" |
17 | android:layout_width= "wrap_content" |
18 | android:layout_height= "wrap_content" |
19 | android:layout_marginTop= "10dp" /> |
mProgress_circle.xml
1 | <style name= "mProgress_circle" > |
2 | <item name= "android:indeterminateDrawable" > @drawable /progressbar_circle</item> |
3 | <item name= "android:minWidth" >25dp</item> |
4 | <item name= "android:minHeight" >25dp</item> |
5 | <item name= "android:maxWidth" >60dp</item> |
6 | <item name= "android:maxHeight" >60dp</item> |
progressbar_circle.xml
1 | <?xml version= "1.0" encoding= "utf-8" ?> |
2 | <!-- android:drawable 自定义的菊花图片 --> |
4 | android:drawable= "@drawable/voice_loading" |
5 | android:fromDegrees= "0" |
8 | android:toDegrees= "360" > |
mProgress_circle_shape_loading.xml
1 | <style name= "mProgress_circle_shape_loading" > |
2 | <item name= "android:indeterminateDrawable" > @drawable /progress_circle_shape</item> |
progress_circle_shape.xml
1 | <?xml version= "1.0" encoding= "utf-8" ?> |
3 | android:fromDegrees= "0" |
6 | android:toDegrees= "360" > |
9 | android:innerRadiusRatio= "3" |
11 | android:thicknessRatio= "8" |
12 | android:useLevel= "false" > |
16 | android:centerColor= "#FFFFFF" |
17 | android:centerY= "0.50" |
18 | android:endColor= "#1E90FF" |
19 | android:startColor= "#000000" |
21 | android:useLevel= "false" /> |
自定义动画实现
主布局
2 | android:id= "@+id/progressbar_layout" |
3 | android:layout_width= "match_parent" |
4 | android:layout_height= "match_parent" |
5 | android:gravity= "center" |
6 | android:orientation= "vertical" > |
8 | android:id= "@+id/my_progressbar" |
9 | android:layout_width= "wrap_content" |
10 | android:layout_height= "wrap_content" |
11 | android:paddingLeft= "30dp" |
12 | android:minWidth= "250dp" |
13 | android:minHeight= "250dp" |
14 | android:indeterminateDrawable= "@anim/progress_circle_loading_anim" /> |
动画资源
progress_loading_image_01.png progress_loading_image_02.png
动画资源文件 progress_circle_loading_anim.xml
1 | <?xml version= "1.0" encoding= "utf-8" ?> |
3 | <item android:duration= "100" android:drawable= "@drawable/progress_loading_image_01" /> |
4 | <item android:duration= "100" android:drawable= "@drawable/progress_loading_image_02" /> |
SeekBar是一种特殊的进度条,其与ProgressBar的区别在于,SeekBar支持用户手动调整进度,可以实现进度条的个性化设置。
SeekBar的继承关系如下:
java.lang.Object
->android.view.View
->android.widget.ProgressBar
->android.widget.AbsSeekBar
->android.widget.SeekBar
监控SeekBar的进度变化的实现方法如下:
1 | seekBar.setOnSeekBarChangeListener( new OnSeekBarChangeListener(){ |
3 | public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { |
7 | public void onStartTrackingTouch(SeekBar seekBar) { |
11 | public void onStopTrackingTouch(SeekBar seekBar) { |
SeekBar继续至ProgressBar拥有ProgressBar所有特性,区别在可以拖动展示.
我们来看下如何自定义一个SeekBar
2 | android:id= "@+id/seekBar2" |
3 | android:layout_width= "match_parent" |
4 | android:layout_height= "wrap_content" |
5 | android:layout_margin= "20dp" |
6 | android:progressDrawable= "@drawable/seekbar_progress_drawable1" |
7 | android:thumb= "@drawable/seekbar_progress_thum_selector" /> |
android:progressDrawable=”@drawable/seekbar_progress_drawable1″ //定义显示进度
android:thumb=”@drawable/seekbar_progress_thum_selector” //定义滑块
seekbar_progress_drawable1.xml
1 | <?xml version= "1.0" encoding= "UTF-8" ?> |
5 | android:id= "@android:id/background" |
6 | android:drawable= "@drawable/progress_bar_n" > |
8 | <item android:id= "@android:id/progress" > |
10 | <nine-patch android:src= "@drawable/progress_bar_p" /> |
seekbar_progress_thum_selector.xml
1 | <?xml version= "1.0" encoding= "utf-8" ?> |
4 | <item android:drawable= "@drawable/eq_seekbar_thumb_press" android:state_pressed= "true" ></item> |
5 | <item android:drawable= "@drawable/eq_seekbar_thumb_normal" ></item> |
1 | <?xml version= "1.0" encoding= "UTF-8" ?> |
3 | <item android:id= "@android:id/background" > |
5 | <corners android:radius= "10dip" /> |
9 | android:centerColor= "#ff000000" |
10 | android:centerY= "0.45" |
11 | android:endColor= "#ffAABD00" |
12 | android:startColor= "#ffffffff" /> |
15 | <item android:id= "@android:id/progress" > |
18 | <corners android:radius= "10dip" /> |
22 | android:centerColor= "#ffFFFF00" |
23 | android:centerY= "0.45" |
24 | android:endColor= "#ff808A87" |
25 | android:startColor= "#ffffffff" /> |