[안드로이드 기초] SeekBar 예제
[안드로이드 기초] SeekBar |
● SeekBar는 프로그레스바에 드래그할 수 있는 타겟을 (Draggable Thumb)를 추가하여 만든 객체인데요. 예를 들어 핸드폰에서 화면 밝기나 음량크기 등을 조절할때 드래그해서 사용하는 객체라고 생각하면 이해가 빠를겁니다.
그림처럼 생긴 형태입니다.
● 그림에서 보는것과 같이 드래그하거나 터치하면 막대에서 선택된 값을 텍스트 뷰에 출력하는 간단한 예제 프로젝트를 만들보겠습니다.
● 먼저 SeekBar의 클래스 상속관계부터 보고 프로젝트를 생성하겠습니다.
● 프로젝트를 생성해서 텍스트뷰 두개와 SeekBar 하나를 배치하고 선택된 값이 출력되는 부분은 배경을 라운드박스 처리해보겠습니다. 먼저 다음과 같이 객체들을 배치합니다.
● xml소스를 살펴보겠습니다.
● 결과값이 출력되는 두번째 텍스트 뷰에는 보는것과 같이 배경을 따로 만들어서 적용시켰습니다. 라운드 박스 만드는건 앞에서도 한번 했습니다만 다시한번 xml 소스를 살펴보겠습니다. 생각보다 아주 간단합니다.
● 이제 메인 액티비티에서 SeekBar에서 선택막대를 클릭해서 드래그하면 그 값을 받아서 두번째 텍스트뷰에 출력하게 하는 내용을 작성해 보겠습니다.
● 1번은 SeekBar를 담을 객체를 선언하고 기본값을 50으로 설정합니다. 이 값이 변하면 화면의 투명도도 변하게될것입니다. 2번은 화면에 배치한 선택막대를 찾아서 객체에 담고, 초기값을 설정합니다. 3번에서는 이벤트 리스너를 작성하는데요. 지정된 값을 "printSelected()메서드"를 이용해서 텍스트뷰에 출력하도록 하는 내용과 선택이 완료했음을 표시하는 메서드입니다. 이 메서드들은 뒤이어 바로 작성하겠습니다.
● 이제 위에서 호출한 printSelected()메서드를 작성하겠습니다.
두번째 텍스트뷰를 아이디값으로 찾아서 "tv"라는 객체에 담습니다. 그리고 선택막대에서 선택된 값은 "int형" 값이므로 이것을 "String형"으로 변환하여 TextView에 대입하고 있습니다. 다음으로 선택막대의 값으로 화면의 투명도를 변경하는 setBrightness() 메서드를 실행하는 내용입니다.
● 그러면 위에서 호출한 setBrightness() 메서드를 작성하겠습니다.
투명도가 0~9는 화면에 보이지 않기 떄문에 최소값을 10으로 하고, 백분율로 계산하기 위해서 최대값을 100으로 설정합니다. 선택막대에서 받아온 값을 'brightness'에 대입하는데요. 이것은 value값을 전역변수로 설정하여 다른 메서드에서도 사용하기 위해서 입니다. 다음으로 윈도우 환경 객체를 호출해서 투명도(alpha) 값을 "0.xx"형식으로 계산하여 대입합니다. (투명도가 "0.0"이면 화면이 보이지 않은 완전 투명을 의미합니다.) 변경된 설정값을 확인할 수 있도록 화면을 활성 상태로 유지하고, 변경한 윈도우 환경값을 적용하는 내용입니다.
● 마지막으로 선택막대에서 선택을 완료했을때 호출했던 doAfterTrack()메서드를 작성하겠습니다.
선택결과를 출력할 텍스트뷰 객체를 찾아와서 선택결과를 재조합해서 출력하는 내용입니다.
● 실행을 해보면서 어떻게 변하나 살펴보겠습니다.