본문 바로가기
IT/프로그래밍

[안드로이드]드로어블(drawable)

by crome 2018. 5. 25.
반응형

안녕하세요. 크롬입니다.


최근 안드로이드 개발 관련 학습중 드로어블에 대한 부분에 대한 개념이 잘 잡히지 않아 정리 하고 갑니다.


드로어블(Drawable)은 그림 이미지등을 관리하기도 하지만 HTML 스타일 시트처럼 객체에 대한 디자인을 정의해 놓아 사용할 수 있다.


드로어블(Drawable)은 뷰에 설정할 수 있는 객체이며 그래픽으로 그릴수 있다. XML로 정의 할수 있으며 JAVA 코드에서도 작성 가능하다. 


드로어블은 구분하자면 아래와 같이 구분되어 진다.


▶비트맵 드로어블(BitmapDrawable) 

이미지 파일을 보여줄 때 사용. 비트맵 그래픽 파일( png, jpg 또는 gif) BitmapDrawable 을 생성합니다. 

android:antialias

android:dither

android:filter

android:gravity

android:mipMap

android:src

android:tileMode


▶나인패치 드로어블(NinePatchDrawable)

콘텐츠에 따라 이미지 크기를 조정 할 수 있는 확장 가능한 영역이 포함된 PNG파일


▶레이어 드로어블(LayerDrawable)

다른 드로어블 배열을 관리하는 드로어블. 이 드로어블은 배열 순서대로 그려지므로, 가장 큰 인덱스를 갖는 요소가 맨 위에 그려집니다. LayerDrawable을 생성합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
      <bitmap android:src="@drawable/android_red"
        android:gravity="center" />
    </item>
    <item android:top="10dp" android:left="10dp">
      <bitmap android:src="@drawable/android_green"
        android:gravity="center" />
    </item>
    <item android:top="20dp" android:left="20dp">
      <bitmap android:src="@drawable/android_blue"
        android:gravity="center" />
    </item>
</layer-list>
cs

res/drawable/layers.xml 드로어블 생성


1
2
3
4
<ImageView
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:src="@drawable/layers" />
cs

레이아웃 xml에 ImageView 생성후 layers 드로어블을 적용



실행 화면  


▶상태 드로어블(StateListDrawable)

뷰의 상태별에 따라 다른 그래픽을 지정

 최상위 태그 <selector>


android:constantSize

android:state_active

android:state_activated

android:state_checkable

android:state_checked

android:state_enabled

android:state_first

android:state_focused

android:state_last

android:state_middle

android:state_pressed

android:state_selected

android:state_single

android:state_window_focused

android:variablePadding

android:visible


<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
android:drawable="@drawable/ic_thumb_up_selected" />
    <item android:drawable="@drawable/ic_thumb_up" />
</selector>


→ 상태에 따른 정의 state_pressed(클릭) 상태와 일반적인 상태의 이미지를 설정한 xml





▶전환 드로어블(TransitionDrawable)

두 개의 드로어블 간에 바뀌도록 만들 수 있음


▶쉐이프 드로어블(ShapeDrawable)

색상과 그라데이션을 포함하여 도형 모양을 정의 할 수 있음


▶클립 드로어블(ClipDrawable)

다른 드로어블을 클리핑, 진행율 표시 줄과 같은 항목 구현


▶스케일 드로어블(ScaleDrawable)

다른 드로어블의 크기를 변경


참조

https://developer.android.com/guide/topics/resources/drawable-resource?hl=ko

728x90
반응형

'IT > 프로그래밍' 카테고리의 다른 글

HTML 5 신규 기능  (102) 2023.10.19
HTML 태그 예시  (98) 2023.10.18
HTML이란?  (80) 2023.10.17
프런트엔드 vs 백엔드 vs 풀스택 개발자  (88) 2023.10.13
eclipse 환경설정 charset 변경  (0) 2023.02.16