안드로이드/드로어블 및 이벤트 처리
드로어블(Drawable)
kitty_cat
2023. 3. 13. 17:05
상태에 따라 그래픽이나 이미지가 선택적으로 보이게 할 수 있는 기능
드로어블은 뷰에 설정할 수 있는 객체이며 그 위에 그래픽을 그릴 수 있음
- 비트맵 드로어블 : 이미지 파일을 보여줄 때 사용하며, 비트맵 그래픽 파일 등을 사용해서 생성함
- 상태 드로어블 : 상태별로 다른 비트맵 그래픽을 창조함
- 전환 드로어블 : 두 개의 드로어블을 서로 전환할 수 있음
- 세이프 드로어블 : 색상과 그라데이션을 포함하여 도형 모양을 정의할 수 있음
- 인셋 드로어블 : 지정된 거리만큼 다른 드로어블을 들어서 보여줄 수 있음
- 클립 드로어블 : 레벨 값을 기준으로 다른 드로어블을 클리핑할 수 있음
- 스케일 드로어블 : 레벨 값을 기준으로 다른 드로어블의 크기를 변경할 수 있음
<상태 드로어블>
<item> 태그의 drawable 속성에는 이미지나 다른 그래픽을 설정하여 화면에 보여줌
state_로 시작하는 속성은 상태를 나타냄
- state_pressed : 눌린 상태
- state_focused : 포커스를 받은 상태
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/finger_pressed" />
<item android:drawable="@drawable/finger" />
</selector>
<세이프 드로어블>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<size android:width="200dp" android:height="120dp"/>
<stroke android:width="1dp" android:color="#0000ff"/>
<solid android:color="#aaddff"/>
<padding android:bottom="1dp"/>
</shape>
<selector> 태그에서 <shape> 태그로 변경하여 속성 값을 rectangle로 입력 (oval 입력하면 타원을 그림)
<size> 태그 : 도형의 크기 지정
<stroke> 태그 : 도형의 테두리 선의 속성을 지정 (width: 선의 굵기, color: 선의 색상)
<solid> 태그 : 도형의 안쪽을 채울 때 사용
<padding> 태그 : 테두리 안쪽 공간을 띄우고 싶을 때
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#7288DB" //시작 부분의 색상
android:centerColor="#3250B4" //가운데 부분의 색상
android:endColor="#254095" //끝 부분의 색상
android:angle="90"
android:centerY="0.5"
/>
<corners android:radius="2dp"/>
</shape>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<stroke android:width="1dp" android:color="#BE55DA"/>
<solid android:color="#00000000"/>
<size android:width="200dp" android:height="100dp"/>
</shape>
</item>
<item android:top="1dp" android:bottom="1dp"
android:right="1dp" android:left="1dp">
<shape android:shape="rectangle">
<stroke android:width="1dp" android:color="#FF55DA"/>
<solid android:color="#00000000"/>
</shape>
</item>
</layer-list>