进度条(SeekBar和RatingBar)—Mars Android开发视频之第一季第十八集(重)

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);
		}
		
	}

转载于:https://my.oschina.net/u/2437172/blog/495784

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值