首先说说SeekBar的使用方法
1. 和其他常用空间一样,需要我们在布局文件中首先声明一个SeekBar的控件:
<SeekBar android:id="@+id/seekbar" android:layout_width="fill_parent"
android:layout_height="wrap_content"></SeekBar>
更加细致的布局大家可以自己制定
2. 在代码中声明一个SeekBar变量并将其与布局文件中的SeekBar控件关联起来
private SeekBar seekBar;
seekBar = (SeekBar)findViewById(R.id.seekbar);
3. 最后,我们要为代码中的SeekBar变量设置监听器,这也是SeekBar控件执行操作的关键,要实现SeekBar. OnSeekBarChangeListener()这个监听器接口,接口中有如下三个函数:
public void onStopTrackingTouch(SeekBar seekBar) {
}
public void onStartTrackingTouch(SeekBar seekBar) {
}
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
其中onStopTrackingTouch(SeekBar seekBar)是在拖动SeekBar游标停止的那一瞬间所触发的回调函数。通俗一点,就是当我们用手指停止拖动SeekBar上的游标时,会触发这个函数执行相应的操作,如显示最后的进度等等。seekBar参数是当前的SeekBar控件对象。
接下来的onStartTrackingTouch(SeekBar seekBar)函数和上面的onStopTrackingTouch(SeekBar seekBar)函数的作用大同小异,是指在我们开始拖动SeekBar游标的瞬间所触发的回调函数。也就是当我们用手指按下游标的那一瞬间,这个函数就会被执行,一般都会在函数中安排一些用户提示信息。seekBar参数是当前的SeekBar控件对象。
最后的这个函数也是SeekBar中最关键的一个函数
onProgressChanged(SeekBar seekBar, int progress, boolean fromUser),这个函数的触发条件是,只要当SeekBar控件的进度值被改变(不论是人为拖动改变,还是程序进行改变),这个函数就会被触发。比如说我们在制作MP3播放器时,需要实现一个拖动SeekBar控件以调节播放进度的功能,那么当我们用手指人为拖动SeekBar游标时,会需要有个一文本来即时的提醒用户当前MP3的时间进度,而这个函数这是就可以用来实现这一功能。其中seekBar参数是当前的SeekBar控件对象,progress是当前的进度值,fromUser用来告诉函数当前进度值的改变是否是由用户执行的。
提醒:在这里说个题外话,有的同学在开发Android程序时会不经意用到这样的一个方法TextView.setText(CharSequence words),这时很多人在测试数据时会直接将如int,float这些值直接放入以代替words参数,例如:
int progress = current.getProgress();
textView.setText(progress);
这时我们在运行程序时系统就会报出android.content.res.Resources$NotFoundException,原因就是因为我们在setText()中用了非CharSequence,而虽然我们在编程的过程中IDE不会报错,但是这样的用法是错误的,大家需要注意。
再来说说RatingBar的使用方法
1. 同样和SeekBar的使用方法类似,先要在布局文件中声明一个RatingBar控件,如:
<RatingBar android:id="@+id/ratingbar" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:numStars="6"
android:stepSize="1.0"></RatingBar>
其中android:numStars用来设置RatingBar显示的小星星数目,一般我们设置成5个就足够了,太多了手机屏幕显示不了(要是你用的3.0开发平板电脑App就另当别论了)。而android:stepSize的作用是来指定每次前进的值,是一个精度为1的float值,如果设置成0.5(你也可以设置成0.1,0.2…..),则每次向前会覆盖或者消去0.5个星星。其他的功能属性大家根据需要自行设定。
2. 接下来也是要在代码中首先声明一个RatingBar的变量并将其与布局文件中的RatingBar控件关联起来
private RatingBar ratingBar;
ratingBar = (RatingBar)findViewById(R.id.ratingbar);
3. 最后,我们要为RatingBar设置监听器以监听RatingBar的星级改变事件,这里需要实现RatingBar.OnRatingBarChangeListener()这个接口,接口中只有一个方法需要实现:
public void onRatingChanged(RatingBar currentBar, float rating, boolean fromUser)
其中currentBar是当前操作的RatingBar对象,rating就是当前的星级值,
fromUser用以判定当前的星级值改变是否当前是由用户改变的。