SeekBar는 progress 속성을 사용하여 초기값을 설정할수 있다.


SeekBar 이벤트는 setOnSeekBarChangeListener를 사용한다.


세 가지 이벤트를 사용할 수 있다.

 - onStartTrackingTouch : SeekBar에 터치하는 순간 이벤트 발생

 - onStopTrackingTouch : SeekBar에 터치가 끝나는 순간 이벤트 발생

 - onProgressChanged : SeekBar의 값이 변할 때 이벤트 발생



1
2
3
4
5
6
7
8
9
10
    <TextView
        android:id="@+id/textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
 
    <SeekBar
        android:id="@+id/seekbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:progress="50" />
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        final TextView textView = (TextView) findViewById(R.id.textview);
        SeekBar seekBar = (SeekBar) findViewById(R.id.seekbar);
        textView.setText(String.valueOf(seekBar.getProgress()));
 
        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                textView.setText(String.valueOf(progress));
            }
 
            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
                textView.setText("트래킹 시작");
            }
 
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                textView.setText("트래킹 종료");
            }
        });
    }
cs


SeekBar를 세로로 표시하려면 rotation 속성을 사용한다.


1
2
3
4
5
    <SeekBar
        android:id="@+id/seekbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:rotation="270" />
cs


SeekBar 외형은 background 속성에 배경을 변경


progressDrawable 속성에 진행상태를 변경


thumb 속성에 손잡이를 변경



1
2
3
4
5
6
7
8
    <SeekBar
        android:id="@+id/seekbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/bg_seekbar"
        android:padding="10dp"
        android:progressDrawable="@drawable/pd_seekbar"
        android:thumb="@drawable/selector_seekbar_thumb" />
cs


bg_seekbar.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:angle="90"
        android:centerColor="#666666"
        android:centerY="0.5"
        android:endColor="#999999"
        android:startColor="#FFFFFF" />
 
    <corners android:radius="5dp" />
 
    <stroke
        android:width="1dp"
        android:color="#999999" />
 
</shape>
cs


pd_seekbar.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="10dp" />
 
            <gradient
                android:angle="-90"
                android:centerColor="#00CC00"
                android:endColor="#FA8072"
                android:startColor="#FA8072" />
 
            <stroke
                android:width="10dp"
                android:color="#999999" />
        </shape>
    </item>
 
    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <corners android:radius="10dp" />
 
                <gradient
                    android:angle="-90"
                    android:centerColor="#666666"
                    android:centerY="0.5"
                    android:endColor="#F4A460"
                    android:startColor="#F0F8FF" />
 
                <stroke
                    android:width="1dp"
                    android:color="#999999" />
            </shape>
        </clip>
    </item>
</layer-list>
cs


selector_seekbar_thumb.xml

1
2
3
4
5
6
7
8
9
10
11
12
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/bg_seekbar_thumb_pressed"
        android:state_pressed="true" android:state_window_focused="true" />
 
    <item android:drawable="@drawable/bg_seekbar_thumb_pressed"
        android:state_focused="true" android:state_window_focused="true" />
 
    <item android:drawable="@drawable/bg_seekbar_thumb_pressed"
        android:state_selected="true" android:state_window_focused="true" />
 
    <item android:drawable="@drawable/bg_seekbar_thumb_normal" />
</selector>
cs


bg_seekbar_thumb_pressed.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape
            android:innerRadius="0dp"
            android:shape="ring"
            android:thickness="14dp"
            android:useLevel="false">
            <size
                android:width="32px"
                android:height="32px" />
            <gradient
                android:centerColor="#99cc99"
                android:endColor="#cccccc"
                android:startColor="#cccccc"
                android:type="sweep"
                android:useLevel="false" />
 
            <stroke
                android:width="2dp"
                android:color="#33666666" />
 
        </shape>
    </item>
 
    <item>
        <shape
            android:innerRadius="0dp"
            android:shape="ring"
            android:thickness="10dp"
            android:useLevel="false">
            <size
                android:height="32px"
                android:width="32px" />
            <gradient
                android:centerColor="#ffffff"
                android:centerY="1"
                android:endColor="#666666"
                android:gradientRadius="20"
                android:startColor="#999999"
                android:type="radial"
                android:useLevel="false"/>
            <stroke
                android:width="1dp"
                android:color="#ffffff" />
        </shape>
    </item>
</layer-list>
cs


bg_seekbar_thumb_normal.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape
            android:innerRadius="0dp"
            android:shape="ring"
            android:thickness="14dp"
            android:useLevel="false">
            <size
                android:height="32px"
                android:width="32px" />
            <gradient
                android:centerColor="#999999"
                android:endColor="#00CED1"
                android:startColor="#8A2BE2"
                android:type="sweep"
                android:useLevel="false" />
 
            <stroke
                android:width="2dp"
                android:color="#33666666" />
        </shape>
    </item>
    <item>
        <shape
            android:innerRadius="0dp"
            android:shape="ring"
            android:thickness="10dp"
            android:useLevel="false">
            <size
                android:height="32px"
                android:width="32px" />
            <gradient
                android:centerColor="#ffffff"
                android:centerY="1"
                android:endColor="#00CED1"
                android:gradientRadius="20"
                android:startColor="#8A3BE2"
                android:type="radial"
                android:useLevel="false" />
            <stroke
                android:width="1dp"
                android:color="#ffffff" />
        </shape>
    </item>
</layer-list>
cs


'Android' 카테고리의 다른 글

[Android] AutoCompleteTextView 사용하기  (0) 2019.03.14
[Android] EditText 사용하기  (0) 2019.03.13
[Android] 라디오 버튼(RadioButton) 사용  (0) 2019.03.11
[Android] CheckBox 사용  (0) 2019.03.08
[Android] ToggleButton/Switch 사용  (0) 2019.03.07

+ Recent posts