안드로이드(Android) SeekBar 위젯을 이용해 화면 밝기 조정하기 |
개발환경 : window 7 64bit, Eclipse Kepler, Android 4.2.2 |
이번 예제에서는 SeekBar 를 이용하는 방법과 안드로이드 화면의
밝기를 조절하기 위해 어떻게 WindowManager 를 사용하는지
알아본다.
안드로이드에 설정된 값들을 가져오기 위해서 getWindow().getAttributes()
함수를 사용한다. 리턴값으로 WindowManager.LayoutParams 를 받게
되는데 파라미터의 객체중에 screenBrightness 값을 조절하면 된다.
적당한 값을 넣고 Window 의 setAttributes 함수를 사용해 화면 밝기를
조절한다.
// 밝기 설정 WindowManager.LayoutParams params = getWindow().getAttributes(); params.screenBrightness = (float)value / 100; getWindow().setAttributes(params);
화면을 구성하기 위해 Palette 에서 SeekBar 를 오른쪽으로 끌어다 놓는다.
다음은 MainActivity 로 가서 SeekBar 위젯객체의 레퍼런스를 가져온다.
그리고 setOnSeekBarChangeListener() 함수를 통해 리스너를 등록한다.
리스너의 역할은 바를 움직일 때 이벤트를 얻어 화면밝기를 조절하기
위함이다.
mSeekBar = (SeekBar)findViewById(R.id.seekBar1); mSeekBar.setOnSeekBarChangeListener(new SeekBarChangeListener());
여기에서는 OnSeekBarChangeListener 인터페이스를 상속받아서
SeekBarChangeListener 클래스를 만들었다. 그리고 SeekBar 가 움직일 때
마다 일어나는 이벤트 함수 onProgressChanged 를 구현하였다.
// Seekbar 이벤트 리스너 class SeekBarChangeListener implements OnSeekBarChangeListener{ public void onProgressChanged(SeekBar seekbar, int progress, boolean fromUser) { setBrightness(progress); } public void onStartTrackingTouch(SeekBar arg0) { } public void onStopTrackingTouch(SeekBar arg0) { } }
화면 조절을 위한 핵심 내용인 setBrightness 는 다음과 같다.
private void setBrightness(int value){ if (value < 10) { value = 0; }else if (value > 100){ value = 100; } nBrightness = value; // 밝기 설정 WindowManager.LayoutParams params = getWindow().getAttributes(); params.screenBrightness = (float)value / 100; getWindow().setAttributes(params); }
1에서 100 까지의 값을 나누었으며 10 이하의 값은 크게 변화가 없으므로
0 으로 셋팅하였다. SeekBar 를 이리저리 움직여 보면 화면밝기가 바뀐다는
것을 알수 있다.
여기에서는 화면밝기를 위해 사용된 위젯이지만 값을 움직임으로 조절하는
다양한 기능에 응용해서 사용할수 있는 좋은 위젯이다. 값을 숫자로 입력하는 것
보다 이렇게 움직임으로 조절할수 있으므로 아주 편리한 기능이다.
'안드로이드 개발' 카테고리의 다른 글
안드로이드(Android) DrawerLayout 사용하여 멀티윈도우 만들기 (3) | 2014.01.12 |
---|---|
안드로이드(Andriod) 에서 다양한 네트워크 연결 및 데이터 받기 (1) | 2013.12.29 |
안드로이드(Android) activity 에서 activity 로 Object 넘기기 (1) | 2013.12.08 |
안드로이드(Android) 에서 ViewFlipper 을 이용해 화면 애니메이션 구현하기 (0) | 2013.11.24 |
안드로이드(android) WebView 페이지 이동과 웹에서 다운받은 파일 SDCARD 에서 확인 (0) | 2013.10.21 |
안드로이드(Android) ProgressBar 진행바 구현하기 (4) | 2013.10.19 |
안드로이드(Android) FrameLayout 이용해서 페이지 슬라이딩 구현하기 (7) | 2013.10.08 |
안드로이드(android) FrameLayout 을 이용해서 이미지 뷰 전환하기 (0) | 2013.10.06 |