進度條(SeekBar和RatingBar)—Mars Android開發視頻之第一季第十八集(重)

1· SeekBar的主要屬性

輸入圖片說明

  • 進度條最大值:max
  • 當前進度:progress
  • 次要進度的值:SecondaryProgress

特色:用戶可以來回拖拽。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>

2· SeekBar的監聽器

接口:OnSeekBarChangeListenercode

方法xml

  • 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的狀況,好比使用按鈕來改變進度: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() + "%.");
		}
		
	}

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);
		}
		
	}
相關文章
相關標籤/搜索