特色:用户可以来回拖拽。java
适用于: 经常使用在播放器上面,当前进度表明播放进度;次要进度表示缓冲进度。android
下面这是一个 最大进度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>
接口:OnSeekBarChangeListenercode
方法:xml
参数: 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的状况,好比使用按钮来改变进度:utf-8
class ButtonListener implements OnClickListener { public void onClick(View v) { seekBar.incrementProgressBy(10); } }
监听器还有两个方法:rem
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() + "%."); } }
这是RatingBar,经常使用做评分:
主要属性
PS:我在布局文件中使用android:progress设置默认进度无效,只有在java中设置才有效。
RatingBar.setProgress(int progress);
setpSize星星的步伐大小
通常取值在1.0之内。
取1的话,那么RatingBar只会一颗星星地增长或减小
若是为0.5的话,那么就会半个星星地增长或减小;
==============================
为0.2的话,那么就会5分之1个星星地增长或减小。
接口:OnRatingBarChangeListener
方法:onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) 进度改变的时候被触发
参数:
监听器的实现:
class RatingBarListener implements OnRatingBarChangeListener { public void onRatingChanged(RatingBar view, float rating, boolean fromUser) { System.out.println("rating: " + rating+ " , 进度是否由用户改变:" + fromUser); } }