Android-高级UI组件-ProgressBar进度条组件-SeekBar拖动条组件-RatingBar星级评分组件
程序员文章站
2024-02-05 12:04:58
...
ProgressBar进度条组件-程序操作
进度条使用非常广泛,比如用户登录时登录的过程就需要用到进度条,还有一些需要耗时的操作,如果需要的时间过长同时并没有进度提示,用户会以为程序死掉大大降低用户的体验,所以在需要耗时操作的地方使用进度条,让用户知道程序正在进行是非常有必要的;还有从网络下载一个文件也需要进度条显示
1.常用属性:
- android:max:进度条的最大值;
- android:progress:进度条已完成进度值,也是当前进度值
- android:progressDrawable:设置轨道对应的Drawable对象;
- android:indeterminate:如果设置成true,则进度条不精确显示进度;
- android:indeterminateDrawable:设置不显示进度的进度条的Drawable对象;
- android:indeterminateDuration:设置不精确显示进度的持续时间;
- android:secondaryProgress:二级进度条,类似于视频播放的一条是当前播放进度,一条是缓冲进度,前者通过progress属性进行设置;
2.进度条常用操作方法
- getMax():返回这个进度条的范围的上限;
- getProgress():返回进度;
- getSecondaryProgress():返回次要进度;
- incrementProgressBy(int diff):指定增加的进度;
- isIndeterminate():指示进度条是否在不确定模式下;
- setIndeterminate(boolean indeterminate):设置不确定模式下;设置未true,表示不确定,进度条仅用于提示进程还在运行,进程运行到大力并不明确,设置为false表示精确模式,此时进度条精确显示当前进度。
3. 进度条样式-通过style属性进行设置
- @android:style/Widget.ProgressBar.Large:大跳跃、旋转画面的进度条;、
- @android:style/Widget.ProgressBar.Small:小跳跃、旋转画面的进度条;
- @android:style/Widget.ProgressBar.Horizontal:粗水平长条进度条;
- ?android:attr/progressBarStyleHorizontal:细水平长条进度条;
- ?android:attr/progressBarStyleLarge:大圆形进度条
- ?android:attr/progressBarStyleSmall:小圆形进度条
4.实例
五种进度条
`系统提供的圆形进度条,依次是大,中,小`
<ProgressBar
style="@android:style/Widget.ProgressBar.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<ProgressBar
style="@android:style/Widget.ProgressBar.Large"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
`系统提供的水平进度条`
<ProgressBar
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100"
android:progress="50"
/>
<ProgressBar
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:indeterminate="true"
/>
效果:::
SeekBar拖动条组件-用户操作
拖动条与进度条类似,不同之处在于拖动条是用户来进行操作,进度条则是程序在操作,拖动条通常用在数值的调整。最常见的地方就是音乐播放器或者视频播放器,音量控制或者播放进度控制。SeekBar是ProgressBar的子类,所以SeekBar具有ProgressBar的所有属性。
1.常用属性:
- android:max:滑动条的最大值
- android:progress:滑动条的当前值
- android:secondaryProgress:二级滑动条的进度
- android:thumb:滑块的显示风格
2.拖动条的setOnSeekBarChangeListener监听事件当中有三个重要的方法
- onProgressChanged:进度发生改变时会触发
- onStartTrackingTouch:按住SeekBar时会触发
- onStopTrackingTouch:放开SeekBar时触发
3.实例
<SeekBar
android:id="@+id/seekbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100" `进度条最大值`
android:thumb="@drawable/a2" `自定义拖动按钮`
/>
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="40sp"
android:hint="数值"
/>
效果:::
4.后端代码,获取用户改变拖动条后的数值
原理:创建拖动条事件,利用文字视图获取值
public class SeekBarActivity extends Activity {
private SeekBar seekbar; `定义拖动组件`
private TextView text; `定义一个文本框`
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_seek_bar);
seekbar = (SeekBar) findViewById(R.id.seekbar); `获取拖动条`
text = (TextView) findViewById(R.id.text); `获取文本框`
`设置监听事件`
seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
Toast.makeText(SeekBarActivity.this, "停止触摸进度条", Toast.LENGTH_SHORT).show();
}
@Override
`触摸事件`
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
Toast.makeText(SeekBarActivity.this,"拖动了进度条" , Toast.LENGTH_SHORT).show();
}
@Override
`以百分比的形式显示当前拖动值`
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
// TODO Auto-generated method stub
text.setText("当前进度值"+progress+"/100");
}
});
}
}
效果:::
4.实例-验证码
RatingBar星级评分组件
星级评分组件一般用于对产品评价或者服务满意度评价,它同拖动条比较类似都允许用户已拖动的形式来改变数值,唯一不同的是星级评分是通过星星图案来表示进度的。
1.常用属性
- android:isIndicator:是否用作指示,设置成true用户无法更改,默认false;不可通过触摸改变RatingBar的进度,
- android:numStars:设置显示多少个星星,必须为整数;
- android:rating:默认的评分星级,必须为浮点数;
- android:stepSize: 评分每次增加的值,默认为0.5,必须为浮点数;
2.其他样式。除了默认的星星图片外,系统还有其他样式
style="?android:attr/ratingBarStyleSmall"
style="?android:attr/ratingBarStyleIndicator"
3.常用操作方法(不知道在哪用/(ㄒoㄒ)/~~)
- getRating():获取当前评分数,返回值为浮点数;
- getStepSize():获取用于指定每次最少需要改变多少个星级,返回值为浮点数;
- getProgress():获取当前评分数,返回整数,半颗星为1;
例子:五星评分
xml文件
<RatingBar
android:id="@+id/ratingbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5" `设置几个星星`
android:rating="1" `默认几个星星`
/>
java文件
原理:获取组件,设置监听事件,在Toast里用String.valueOf(rating)
方法获取值
public class RatingBarActivity extends Activity {
private RatingBar ratingbar; `声明RatingBar`
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rating_bar);
ratingbar=(RatingBar) findViewById(R.id.ratingbar); `获取RatingBar组件`
`设置监听事件`
ratingbar.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
// TODO Auto-generated method stub
`输出评分-String.valueOf(rating)`
Toast.makeText(RatingBarActivity.this, "获得的评分是"+String.valueOf(rating),Toast.LENGTH_LONG).show();
}
});
}
}
效果:::