不知道大家有沒有遇到過,在聽一首歌時,我們可以隨意改變歌曲的進度,在聽完歌后可以對這首歌進行評分,在開發中,要實現這兩個功能,就要用到兩個控制項,分別是SeekBar和RatingBar。下面我將這兩個控制項簡單的用法進行詳細說明。
首先先看下運行效果:
下來我們看看布局檔案的設計:
main.xml:
1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:orientation="vertical"
4 android:layout_width="fill_parent"
5 android:layout_height="fill_parent"
6 >
7 <TextView
8 android:layout_width="fill_parent"
9 android:layout_height="wrap_content"
10 android:text="SeekBar"/>
11 <SeekBar
12 android:id="@+id/sb_seekbar"
13 android:layout_width="fill_parent"
14 android:layout_height="wrap_content"/>
15 <TextView
16 android:layout_width="fill_parent"
17 android:layout_height="wrap_content"
18 android:text="RatingBar"/>
19 <RatingBar
20 android:id="@+id/rb_ratingbar"
21 android:layout_width="wrap_content"
22 android:layout_height="wrap_content"
23 android:numStars="5"
24 android:stepSize="0.5"/>
25 </LinearLayout>
在布局檔案中我只定義了SeekBar ,RatingBar這兩個控制項。在定義RatingBar中有兩個屬性需要說明一下,android:numStars是用來設定你要顯示的星星的個數,這個根據需求自己來設定,我在這裡設定為5個,android:stepSize是來設定RatingBar每次前進多少,這裡我設定為一半:0.5個星,這個也是根據需求來設定。
下面來看java代碼的編寫,這連個控制項的具體用法我在編寫代碼時做了注釋,在這裡我就不做多餘的解釋了,直接將代碼附在下面,大家參考下:
SeekBarActivity:
1 package cn.yj3g.Seekbar;
2
3 import android.app.Activity;
4 import android.os.Bundle;
5 import android.util.Log;
6 import android.widget.RatingBar;
7 import android.widget.RatingBar.OnRatingBarChangeListener;
8 import android.widget.SeekBar;
9 import android.widget.SeekBar.OnSeekBarChangeListener;
10 /**
11 *引用 OnSeekBarChangeListener和OnRatingBarChangeListener
12 */
13 public class SeekBarActivity extends Activity implements OnSeekBarChangeListener, OnRatingBarChangeListener {
14 private SeekBar bar; www.2cto.com
15 private RatingBar ratingBar;
16
17 @Override
18 public void onCreate(Bundle savedInstanceState) {
19 super.onCreate(savedInstanceState);
20 setContentView(R.layout.main);
21 bar = (SeekBar) findViewById(R.id.sb_seekbar);
22 ratingBar=(RatingBar) findViewById(R.id.rb_ratingbar);
23 //設定seekbar的最大值
24 bar.setMax(100);
25 //設定監聽器,監聽進度條的改變狀態
26 bar.setOnSeekBarChangeListener(this);
27 //設定監聽器,監聽ratingbar的改變狀態
28 ratingBar.setOnRatingBarChangeListener(this);
29 }
30 /**
31 * 當進度條的進度發生變化時調用該方法
32 * seekBar,當前的seekbar
33 * progress,seekbar的當前進度
34 * fromUser是否是使用者改變進度的
35 */
36 @Override
37 public void onProgressChanged(SeekBar seekBar, int progress,
38 boolean fromUser) {
39 Log.v("TAG", "onProgressChanged-->seekBar="+seekBar.getId()+"progress="+progress+"fromUser="+fromUser);
40 }
41 /**
42 * 當使用者開始滑動進度條時調用該方法
43 */
44 @Override
45 public void onStartTrackingTouch(SeekBar seekBar) {
46 Log.v("TAG", "onStartTrackingTouch start--->"+"+seekBar="+seekBar.getProgress());
47 }
48 /**
49 * 當使用者結束滑動是調用該方法
50 */
51 @Override
52 public void onStopTrackingTouch(SeekBar seekBar) {
53 Log.v("TAG", "onStopTrackingTouch end--->"+"+seekBar="+seekBar.getProgress());
54 }
55 /**
56 * 當ratingBar的進度發生變化時調用該方法
57 * ratingBar,當前的ratingBar
58 * rating代表評分
59 * fromUser是否是使用者操作的
60 */
61 @Override
62 public void onRatingChanged(RatingBar ratingBar, float rating,
63 boolean fromUser) {
64 Log.v("TAG", "onRatingChanged-->ratingBar="+ratingBar.getId()+"rating="+rating+"fromUser="+fromUser);
65 }
66 }
上面在為兩個控制項設定監聽時,重寫了很多方法,這些方法都很容易理解,根據不同的需求在重寫這些方法。在這裡我只是簡單的列印了一下參數,來說明各個參數的含義。具體的實現就要根據需要來做了,這裡我就不做多餘的操作了
作者:青春流水指間