티스토리 뷰

Android/정리

SeekBar

란텔 2016. 8. 4. 15:55

상태를 표시해주는 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
최근에 올라온 글
최근에 달린 댓글
TAG
more
Total
Today
Yesterday