1· SeekBar的主要属性
- 进度条最大值:max
- 当前进度:progress
- 次要进度的值:SecondaryProgress
特点:用户能够来回拖拽。
适用于: 常用在播放器上面,当前进度代表播放进度;次要进度表示缓冲进度。
下面这是一个 最大进度100,当前进度30,次要进度50的SeekBar:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<SeekBar
android:id="@+id/seekBar_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:max="100"
android:progress="30"
android:secondaryProgress="50"/>
</RelativeLayout>
2· SeekBar的监听器
接口:OnSeekBarChangeListener
方法:
- onProgressChanged(SeekBar seeBar, int progress, boolean fromUser) 进度发生变化时将会触发该方法。
参数: seekBar 触发监听器的SeekBar对象 progress SeekBar的当前进度 fromUser 进度的变化是否由用户拖拽改变的;
例子: 打印当前进度与进度是否由用户改变:
SeekBar监听器实现
class SeekBarListener implements OnSeekBarChangeListener {
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
System.out.println("当前进度为" + progress * 100 / seekBar.getMax() + "%,进度是否由用户改变:" + fromUser);
}
public void onStartTrackingTouch(SeekBar arg0) {
}
public void onStopTrackingTouch(SeekBar arg0) {
}
}
手动拖拽时,fromUser为true. 现在我们再来看看fromUser为false的情况,比如使用按钮来改变进度:
class ButtonListener implements OnClickListener {
public void onClick(View v) {
seekBar.incrementProgressBy(10);
}
}
监听器还有两个方法:
-
onStartTrackingTouch(SeekBar seekbar) 开始拖拽的一瞬间所触发的方法
-
onStopTrackingTouch(SeekBar seekbar) 松开拖拽的一瞬间所触发的方法
监听器的实现:
class SeekBarListener implements OnSeekBarChangeListener {
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
public void onStartTrackingTouch(SeekBar seekBar) {
System.out.println("开始拖拽" + " , 进度为: " + seekBar.getProgress() * 100 / seekBar.getMax() + "%.");
}
public void onStopTrackingTouch(SeekBar seekBar) {
System.out.println("停止拖拽" + " , 进度为: " + seekBar.getProgress() * 100 / seekBar.getMax() + "%.");
}
}
3· RatingBar的主要属性
这是RatingBar,常用作评分:
主要属性
- 星星的个数:android:numStars
- 默认进度:android:progress
- 星星的步伐大小:android:stepSize
PS:我在布局文件中使用android:progress设置默认进度无效,只有在java中设置才有效。
RatingBar.setProgress(int progress);
setpSize星星的步伐大小
一般取值在1.0以内。
取1的话,那么RatingBar只会一颗星星地增加或减少
如果为0.5的话,那么就会半个星星地增加或减少;
==============================
为0.2的话,那么就会5分之1个星星地增加或减少。
4· RatingBar的监听器
接口:OnRatingBarChangeListener
方法:onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) 进度改变的时候被触发
参数:
- ratingBar:触发方法的RatingBar;
- rating:星星数
- fromUser:改变是否由用户引发
监听器的实现:
class RatingBarListener implements OnRatingBarChangeListener {
public void onRatingChanged(RatingBar view, float rating, boolean fromUser) {
System.out.println("rating: " + rating+ " , 进度是否由用户改变:" + fromUser);
}
}
来源:oschina
链接:https://my.oschina.net/u/2437172/blog/495784