Android 拖動條SeekBar的簡單使用

在Android開發中,拖動條常常用於對系統某種數值的設置,例如播放視頻和音量等都會用到拖動條SeekBar。SeekBar和進度條十分相似,只是拖動條可以通過滑動塊的位置來標誌數值,並且允許用戶拖動滑動塊來改變值。
1、SeekBar的常見的一些的屬性

  • style=”@android:style/Widget.SeekBar” 指定seekbar的樣式
  • android:max=”200” 指定seekbar的最大值爲200,默認是100
  • android:progress=”75”指定seekbar的當前值爲75
  • android:thumb 設置seekbar的滑動塊樣式
  • android:progressDrawable 設置seekbar的進度條的樣式
    其中指定seekbar的當前值,我們也可以通過代碼設置,如:seekBar.setProgress(75);

2、當拖動滑動塊的位置的時候,爲了監聽SeekBar的拖動情況,我們可以爲它綁定一個onSeekBarChangeListener監聽器

package per.lijuan.seekbardome;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.SeekBar;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    private SeekBar seekBar;
    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        seekBar = (SeekBar) findViewById(R.id.progress);
        textView = (TextView) findViewById(R.id.text1);
        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                // 當拖動條的滑塊位置發生改變時觸發該方法,在這裏直接使用參數progress,即當前滑塊代表的進度值
                textView.setText("Value:" + Integer.toString(progress));
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
                Log.e("------------", "開始滑動!");
            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                Log.e("------------", "停止滑動!");
            }
        });
    }

}

activity_main.xml

<?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"
    android:layout_marginTop="10dp">

    <SeekBar
        android:id="@+id/progress"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/text1"
        android:maxHeight="2dp"
        android:minHeight="2dp"
        android:paddingBottom="3dp"
        android:paddingLeft="12dp"
        android:max="200"
        android:paddingRight="12dp"
        android:paddingTop="3dp"
        android:progressDrawable="@drawable/layer_progress"
        android:thumb="@drawable/shape_circle" />

    <TextView
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:gravity="left"
        android:padding="6dp"
        android:text="Value:0"
        android:textColor="#16BC5C"
        android:textSize="16dp" />
</RelativeLayout>

seekbar的滑動塊樣式 shape_circle.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <!-- solid表示遠的填充色 -->
    <solid android:color="#16BC5C" />
    <!-- stroke則代表遠的邊框線 -->
    <stroke
        android:width="1dp"
        android:color="#16BC5C" />
    <!-- size控制高寬 -->
    <size
        android:height="20dp"
        android:width="20dp" />
</shape>

設置seekbar的進度條樣式 layer_progress.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="3dp" />
            <solid android:color="#ECF0F1" />
        </shape>
    </item>
    <item android:id="@android:id/secondaryProgress">
        <clip>
            <shape>
                <corners android:radius="3dp" />
                <solid android:color="#C6CACE" />
            </shape>
        </clip>
    </item>
    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <corners android:radius="3dp" />
                <solid android:color="#16BC5C" />
            </shape>
        </clip>
    </item>
</layer-list>

好啦,我們看看效果圖唄:
這裏寫圖片描述

3、除了自定義SeekBar的樣式,我們也可以使用系統提供的SeekBar樣式,例如:
(1)普通的

style="@android:style/Widget.SeekBar"

這裏寫圖片描述

(2)DeviceDefault

style="@android:style/Widget.DeviceDefault.SeekBar"

這裏寫圖片描述

(3)Holo

style="@android:style/Widget.Holo.SeekBar"

這裏寫圖片描述

“`
好了,本篇文章就這樣啦,存在總結不到位的地方還望指導,感謝^_^

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章