자신만의 커스텀 뷰를 만들어 봅니다
Custom View 란?
TextView, ImageView 같은 뷰만으로 구성할 수 없는 개발자가 직접 만든 뷰를 의미합니다. 커스텀 뷰를 만드는 방법은 세 가지로 나누어 생각해볼 수 있습니다.
- API에서 제공하는 뷰를 그대로 이용하면서 약간 변형시킨 뷰
- 여러 뷰를 합쳐서 한번에 출력하기 위한 뷰
- 기존 API에 전혀 존재하지 않는 뷰
Custom View 만들기
저는 책의 예제와 똑같이 플러스, 마이너스 아이콘으로 숫자를 증감하고, 그 값을 액티비티에 전달해서 이용하는 커스텀 뷰를 만들어보겠습니다. 일단 커스텀 속성을 사용하기 위해 res폴더에 attrs.xml을 만들고 그곳에 등록해 줍니다.
그 다음 이벤트 처리 부분을 위해 onChange 메소드를 가지는 인터페이스를 만들어 줍니다.
커스텀 뷰를 만들기 위해 클래스를 생성하여 다음과 같이 작성하여 주었습니다. 기본적으로 커스텀 뷰를 만들기 위해서는 생성자를 다음과 같이 세 가지를 모두 작성해주어야 합니다. value는 증감 값이고 Bitmap은 화면 출력을 위한 변수 입니다. Rect는 이미지가 화면에 출력되는 좌표 정보입니다. 그리고 listeners 변수는 Observer를 등록하기 위한 객체입니다. 이 후의 코드는 동작을 위한 코드임으로 따로 공개하진 않겠습니다.
옵저버 등록을 위해 리스너 메소드를 만들고 listeners 이벤트를 추가하는 동작을 작성해주었습니다.
데이터의 변화 등의 이벤트가 필요한 부분에서 아래와 같이 작성해주었습니다.
이제 메인 액티비티에 아래와 같이 코드를 작성해줍니다. 아까 만든 인터페이스를 implements 해주고 클래스 내에서 재정의 해주면 됩니다.
마지막으로 activity_main.xml 파일에서 커스텀 뷰를 등록하면 끝입니다. 이 때 커스텀 뷰는 패키지명까지 입력해주어야합니다.
제 커스텀 뷰의 실행화면입니다!
plus, minus 버튼을 누르면 바뀌는 숫자에 따라서 밑에 있는 사각형의 색깔이 변하게 됩니다. 감사합니다!
참고 서적 : 깡샘의 안드로이드 프로그래밍