ProgressBar及其子类的继承关系图:
ProgressBar
1.概述:
用于向用户显示某个耗时操作完成的百分比。
2.xml属性:
1)各种风格的进度条,通过style属性,支持下列属性值:
@android:style/Widget.ProgressBar.Horizontal:水平进度条
@android:style/Widget.ProgressBar.Inverse普通大小环形进度条
@android:style/Widget.ProgressBar.Large:大环形进度条
@android:style/Widget.ProgressBar.Large.Inverse:大环形进度条
@android:style/Widget.ProgressBar.Small:大环形进度条
@android:style/Widget.ProgressBar.Small.Inverse:大环形进度条
3.详细介绍
1.进度条:默认是圆形
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
2.水平进度条:
1)xml:
//改变style变成进度条,可以用max设置总长度。
<ProgressBar
android:id="@+id/progressBar_hor"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleHorizontal"
android:max="100"/>
2)代码:
getProgress()得到进度位置
setProgress()设置进度位置
public void onClick(View arg0) {
int progress = btnBarHori.getProgress();
if(progress<100){
progress = progress+20;
btnBarHori.setProgress(progress);
}else{
progress =0;
btnBarHori.setProgress(progress);
}
}
结果:
3.改变可见性:
1>xml控制可见性:任何组件都有可见属性:android:visibility ,指定值为visible(可见),invisible(不可见但仍占据位置)和gone(不可见且不占据屏幕空间)
2>代码控制:
setVisibility()方法,传入参数为View.VISIBLE,View.INVISIBLE,View.GONE
getVisibility()可以判断可见性。
SeekBar(拖动条)
1.概述:
拖动条和进度条相似,只是进度条采用颜色填充来表明进度完成的程度,而拖动条通过滑块的位置来标识数值。
所以拖动条通常用于对系统的某种数值进行调节,比如调节音量。
2.xml属性:
thumb=”” //指定一个Drawable对象,该对象作为自定义滑块。
3.监听器:
为了让程序能响应拖动条滑块位置的改变,程序可以考虑为它绑定一个OnSeekBarChangeListener监听器。
4.范例:
功能:seekBar动态改变图片透明度。
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/sunli"
/>
<SeekBar
android:id="@+id/seekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="255"
android:progress="255"
android:thumb="@drawable/ic_launcher"/>
public class MainActivity extends Activity {
private ImageView mImageView;
private SeekBar mSeekBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mImageView =(ImageView) findViewById(R.id.imageView);
mSeekBar =(SeekBar) findViewById(R.id.seekBar);
mSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub
}
@Override
public void onStartTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub
}
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
mImageView.setAlpha(arg1);//由于将seekbar数值设为了255,所以直接带入即可,数值越大,越亮
}
});
}
}
RatingBar(星级评分条)
1.概述:
RatingBar和SeekBar有相同的父类AbsSeekBar,区别在于RatingBar通过星星来表示进度。
2.xml属性:
isIndicator=”” //设置该星级评分条是否允许用户改变(true为不允许改变)
numStars=:”” //设置评分条共有多少星级
rating=”” //设置默认的星级
stepSize=”” //设置每次最少需要改变多少个星级。
3.监听事件
为了让程序能响应星级评分条的改变,程序为它绑定一个OnRatingBarChangeLister监听器。
4.范例:
<RatingBar
android:id="@+id/ratingBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:max="255"
android:numStars="5"
android:rating="2"
android:stepSize="0.5"
android:layout_below="@id/imageView"
>
</RatingBar>