ProgressBar:进度条 还包括下面三种
ProgressBar有两种展示方式,表盘形式(普通、小、大)和条形填充形式。在layout定义时,需要通过设施style属性类设置展示方式。
XML重要属性
android:max 设置进度条长度最大值
android:progress 设定度条当前进度值
android:secondargProgress 第二进度条进度值
android:progressBarStyle 默认进度条样式
android:progressBarStyleHorizontal 水平样式
style="@android:style/Widget.ProgressBar.Small" //小型圆形进度条
style="@android:style/Widget.ProgressBar.Small.Inverse" //小型圆形进度条
style="@android:style/Widget.ProgressBar.Inverse" //中型圆形进度条
style="@android:style/Widget.ProgressBar.Large" //大型圆形进度条
style="@android:style/Widget.ProgressBar.Large.Inverse" //大型圆形进度条
style="@android:style/Widget.ProgressBar.Horizontal" //水平进度条
其中,带有Inverse参数和不带有Inverse参数的style属性区别在于:当进度条控件所在的界面背景颜色为白色时,需要使用带有Inverse参数的style属性,否则进度条将看不见。
重要方法
getMax():返回这个进度条的范围的上限
getProgress():返回当前进度值
getSecondaryProgress() 返回次要当前进度值
incrementProgressBy(int diff) 指定增加的进度 即步长
islndeterminate():指示进度条是否在不确定模式下
setlndeterminate(boolean indeterminate):设置不确定模式下
setVisibility(int v):设置该进度条是否可视
1.ProgressDialog:对话框进度条
ProgressDialog pd=new ProgressDialog(this);
pd.setTitle("对话框标题");
pd.setMessage("信息,在下载....");
pd.setMax(100);
pd.setProgress(50);//进度
pd.setCancelable(false);//对话框按返回键不能撤销(一直转)
pd.setSecondaryProgress(80);//第二进度
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);样式设置
pd.show();//最后要显示
2.标题进度条
//设置进度条标题(该方法必须在setContentVi ew方法之前)
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS)
//显示标题栏进度条(在setCon方法下) setProgressBarVisibility(true);
3.自定义进度条
通过一个图片来自定义进度条:
android:indeterminateDrawable="@drawable/tupian_bg"
步骤:
1在res/drawable/下创建一个layer-list
2,设置ProgressBar的android:indeterminateDrawable属性
<layer-list 资源文件的设置xmlns:android="http://schemas.android.com/apk/res/android" >
<item > 旋转
<rotate android:drawable="@drawable/ic_launcher"
android:fromDegrees="0" 角度0
android:toDegrees="360" 到角度360旋转
android:pivotX="50%" 轴中心
android:pivotY="50%"/>
</item>
</layer-list>
例子(先看下面的效果吧):
<ProgressBar android:id="@+id/pb_progressbar" style="@style/StyleProgressBarMini" android:layout_width="0dp" android:layout_weight="1" android:layout_height="40dp" android:background="@drawable/shape_progressbar_bg" android:max="100" android:progress="50" android:indeterminate="false" />
进度条的背景设置:drawable/shape_progressbar_bg.xml
<?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <!-- 边框填充的颜色 --> <solid android:color="#ffcccc" /> <!-- 设置进度条的四个角为弧形 弧形的半径--> <corners android:radius="90dp" /> <!--padding:边界的间隔--> <padding android:bottom="2dp" android:left="2dp" android:right="2dp" android:top="2dp" /> </shape>
进度条的样式设置,values/styles.xml/StyleProgressBarMini
<style name="StyleProgressBarMini" parent="@android:style/Widget.ProgressBar.Horizontal"> <item name="android:maxHeight">100dip</item> <item name="android:minHeight">10dip</item> <item name="android:indeterminateOnly">false</item> <item name="android:indeterminateDrawable">@android:drawable/progress_indeterminate_horizontal</item> <item name="android:progressDrawable">@drawable/shape_progressbar_mini</item> </style>
进度条颜色设置:drawable/shape_progressbar_mini.xml
<?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="90dp" /> <gradient android:angle="270" android:centerY="0.75" android:endColor="#98f7e9" android:startColor="#98f7e9" /> </shape> </item> <!-- 第二进度条的背景 左边是圆形 但右边不能--> <item android:id="@android:id/secondaryProgress"> <clip> <shape> <corners android:radius="5dip" /> <gradient android:angle="270" android:centerY="0.75" android:endColor="#df0024" android:startColor="#df0024" /> </shape> </clip> </item> <!--左边是圆形 但右边不能--> <item android:id="@android:id/progress"> <clip> <shape> <corners android:radius="90dp" /> <gradient android:angle="270" android:centerY="0.75" android:endColor="@color/title_background" android:startColor="@color/title_background" /> </shape> </clip> </item> </layer-list>
效果图:(可见 进度条右边不是圆弧 而是直角的)
解决办法:
<!--左边是圆形 但右边不能--> <item android:id="@android:id/progress"> <clip> <shape> <corners android:radius="90dp" /> <gradient android:angle="270" android:centerY="0.75" android:endColor="@color/title_background" android:startColor="@color/title_background" /> </shape> </clip> </item> <!--修改为: 进度条的背景 --> <!-- 进度条 --> <item android:id="@android:id/progress"> <scale android:scaleWidth="100%" android:drawable="@drawable/shape_progress_bg" /> </item>
drawable/shape_progress_bg.xml 当然android:drawable 也可以使用.9图片
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/title_background" /> <corners android:radius="90dp" /> </shape>
效果如下: