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 |