티스토리 뷰
상태를 표시해주는 Seekbar는 ProgressBar를 확장한 것이다. ProgressBar의 속성을 가지고 있으면서도 사용자가 이 SeekBar의 값을 조절할 수 있도록 하고 있다.
주로 볼륨 조절이나, 동영상 재생 시에 재생 위치 조절을 위해 사용된다.
SeekBar클래스의 setOnSeekBarChangeListener메서드를 통해 SeekBar.OnSeekBarChangeListener를 구현한 클래스를 메서드의 인자로 등록해서 SeekBar의 상태가 바뀔 때마다 호출되도록 할 수 있는 기능을 작성할 수 있다.
액티비티 code
public class MainActivity extends AppCompatActivity { SeekBar bar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //레이아웃 xml에서 SeekBar객체 가져오기 bar = (SeekBar) findViewById(R.id.bar); //SeekBar가 동작하기 위한 리스너 등록 bar.setOnSeekBarChangeListener(new CustomSeekBarChangeListener()); } //밝기 값 변경 메서드 void changeBrightness(int val) { if (val < 10) { val = 10; } else if (val > 100) { val = 100; } WindowManager.LayoutParams params = getWindow().getAttributes(); params.screenBrightness = (float) val / 100; getWindow().setAttributes(params); } //OnSeekBarChangeListener를 구현하는 클래스 class CustomSeekBarChangeListener implements SeekBar.OnSeekBarChangeListener { @Override public void onProgressChanged(SeekBar seekBar, int i, boolean b) { changeBrightness(i); } @Override public void onStartTrackingTouch(SeekBar seekBar) { //SeekBar의 값 변경을 위해서 처음 터치 했을 때 Toast.makeText(MainActivity.this, "밝기값을 변경합니다", Toast.LENGTH_SHORT).show(); } @Override public void onStopTrackingTouch(SeekBar seekBar) { //SeekBar를 터치하다가 멈췄을 때 Toast.makeText(MainActivity.this, seekBar.getProgress() + "%", Toast.LENGTH_SHORT).show(); } } } | cs |
layout xml 코드
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.choonie.seekbarapp.MainActivity"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="밝기 조절" /> <SeekBar android:id="@+id/bar" android:max="100" android:progress="0" android:layout_marginRight="15dp" android:layout_marginLeft="15dp" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> | cs |
'Android > 정리' 카테고리의 다른 글
키패드 (0) | 2016.09.04 |
---|---|
탭 (Tab) (0) | 2016.08.07 |
WebView사용하기 (웹뷰) (0) | 2016.06.14 |
Androdmanifest.xml의 configchanges속성 (0) | 2016.06.10 |
android selector xml 사용 (뷰를 터치시 색상 효과 주기) (0) | 2016.06.10 |
Comments