아래의 글은 BOOSTER 서포터즈로 활동했던 zhfpt***님이
작성한 부스트코스 후기입니다.
여러분들의 성원에 더 노력하는 부스트코스가 되겠습니다.
감사합니다.
******************************************
1)링크: https://blog.naver.com/zhfptm12/221799731047
2)작성날짜: 20/02/07
background 속성을 사용하여 배경에 이미지를 설정할 수 있습니다. 하지만 그 이미지는 아무런 변화가 없습니다.
예를 들어, 버튼이 눌렸을 때, 눌리지 않았을 때 모두 같은 이미지가 보이게 됩니다.
이것을 해결하기 위해서는 드로어블을 사용합니다.
드로어블을 사용하면 뷰 나 화면 일부를 그래픽으로 그리는 기능을 XML으로 만들 수 있습니다.
그럼 Drawable, StateListDrawable, ShapeDrawable 을 중점적으로 보면서 드로어블에 대해서 포스팅해보겠습니다.
Drawable(드로어블)
'드로 버블'이란 것은 화면에 그릴 수 있는 것을 말합니다. 또 이것을 XML로 만들 수가 있습니다. 즉, 화면의 일부에 어떠 ㄴ그래픽을 그리고 싶을 때 XML로 만들 수 있는데 이것을 '드로 버블'이라고 부릅니다.
드로어블 XML 파일은 /res/drawable 폴더 안에 넣어서 마치 이미지처럼 뷰의 배경으로 설정될 수 있습니다.
드로어블 에는 이미지 파일을 xml에 넣고 그 파일을 어떻게 보여줘라라고 지정하는 것을 비트맵드로어블
상태별로 다른 그래픽을 참조할 수 있는 상태 드로어블
두 개의 드로어블 간에 바뀌는 전환 드로어블
우리가 직접 모양을 그릴 수 있는 셰이프 드로어블 등등이 있습니다.
StateListDrawable(상태 드로어블)
뷰의 상태에 따라 뷰에 보여줄 그래픽을 다르게 지정할 수 있도록 합니다.
res/drawable 폴더 안에 XML 파일을 만들어 그 안에 <item>태그를 넣습니다.
item 태그의 속성 중 state_pressed 속성에 true라고 주면, 눌렸을 때 그 아이템의 이미지가 보이게 됩니다.
예를 들어 change라는 XML 파일을 drawable 폴더 안에 만들었습니다. <item>태그를 두 개 만들고 첫 item에는 A라는 이미지를, 두 번째 item에는 B라는 이미지와, state_pressed = "true" 속성 값을 주어 만듭니다.
main.xml에 버튼을 하나 만들고, background 속성 값을 @drawable/change로 주게 되면 눌리지 않았을 때는 A, 눌리게 되면 B의 이미지 가 보이게 되는 것입니다.
<생각해보기>
1. 소스 코드로 드로어블을 만드는 것보다 XML로 드로어블을 만들어 사용하면 얼마나 더 편리해지는 걸까요?
- 버튼이 여러 개인 경우, 버튼에 온 클릭 관련 메서드를 달고 이벤트 처리를 다 해줘야 하지만 xml로 만들면 통일 시켜 사용할 수 있을 것 같습니다.
2. XML로 드로어블을 만들고 레이아웃의 배경으로 설정하면 카드 모양의 배경을 만들 수 있을까요?
같은 방식으로 만들면 가능할 것 같습니다.
[출처] [부스트 코스] 안드로이드 - 상태 드로어블 01주 차|작성자 zhfptm12