드로어블 리소스는 화면에 그릴 수 있으며 getDrawable(int)
와 같은 API를 사용하여 가져오거나 android:drawable
및 android:icon
과 같은 특성을 사용하여 다른 XML 리소스에 적용할 수 있는 그래픽에 대한 일반적인 개념입니다. 다음과 같이 여러 다양한 유형의 드로어블이 있습니다.
- 비트맵 파일
- 비트맵 그래픽 파일(
.png
,.jpg
또는.gif
).BitmapDrawable
을 생성합니다. - 나인 패치 파일
- 콘텐츠에 따라 이미지 크기를 조정할 수 있는 확장 가능한 영역이 포함된 PNG 파일(
.9.png
).NinePatchDrawable
을 생성합니다. - 계층 목록
- 다른 드로어블 배열을 관리하는 드로어블. 이 드로어블은 배열 순서대로 그려지므로, 가장 큰 인덱스를 갖는 요소가 맨 위에 그려집니다.
LayerDrawable
을 생성합니다. - 상태 목록
- 상태별로 다른 비트맵 그래픽을 참조하는 XML 파일(예를 들어, 버튼을 누를 때 다른 이미지 사용).
StateListDrawable
을 생성합니다. - 레벨 목록
- 대체 드로어블의 수를 관리하는 드로어블을 정의하는 XML 파일. 각 드로어블에는 최대 숫자 값이 할당됩니다.
LevelListDrawable
을 생성합니다. - 전환 드로어블
- 두 개의 드로어블 리소스 간을 크로스 페이드할 수 있는 드로어블을 정의하는 XML 파일.
TransitionDrawable
을 생성합니다. - 인셋 드로어블
- 지정된 거리만큼 다른 드로어블을 인셋하는 드로어블을 정의하는 XML 파일. 이 드로어블은 뷰가 뷰의 실제 범위보다 작은 백그라운드를 필요로 할 때 유용합니다.
- 클립 드로어블
- 이 드로어블의 현재 레벨 값을 기준으로 다른 드로어블을 클립하는 드로어블을 정의하는 XML 파일.
ClipDrawable
을 생성합니다. - 배율 조정 드로어블
- 현재 레벨 값을 기준으로 다른 드로어블의 크기를 변경하는 드로어블을 정의하는 XML 파일.
ScaleDrawable
을 생성합니다. - 셰이프 드로어블
- 색상과 그라데이션을 포함하여 기하학적 모양을 정의하는 XML 파일.
GradientDrawable
을 생성합니다.
AnimationDrawable
을 생성하는 방법을 보려면 애니메이션 리소스 문서도 참조하세요.
참고: 색상 리소스를 XML에서 드로어블로 사용할 수도 있습니다. 예를 들어, 상태 목록 드로어블을 생성할 때 android:drawable
특성에 대한 색상 리소스(android:drawable="@color/green"
)를 참조할 수 있습니다.
비트맵
비트맵 이미지. Android는 .png
(권장), .jpg
(허용), .gif
(권장 안 함) 등 세 가지 형식의 비트맵 파일을 지원합니다.
파일 이름을 리소스 ID로 사용하여 비트맵 파일을 직접 참조하거나 XML에 별칭 리소스 ID를 생성할 수 있습니다.
참고: 비트맵 파일은 빌드 프로세스 과정에서 aapt
도구에 의해 무손실 이미지 압축을 사용하여 자동으로 최적화될 수 있습니다. 예를 들어, 256색을 초과하는 색상을 필요로 하지 않는 트루 컬러 PNG는 색상 팔레트를 사용하여 8비트 PNG로 변환될 수 있습니다. 이 경우 품질은 동일하지만 더 적은 메모리를 필요로 하는 이미지가 생성됩니다. 따라서 빌드 과정에서 이 디렉토리에 위치한 이미지 바이너리가 변경될 수 있다는 점에 유의해야 합니다. 이미지를 비트맵으로 변환하기 위해 비트 스트림으로 읽으려는 경우 이미지를 res/raw/
폴더에 대신 저장하십시오. 이 폴더에서는 이미지가 최적화되지 않습니다.
비트맵 파일
비트맵 파일은 .png
, .jpg
또는 .gif
파일입니다. Android는 res/drawable/
디렉토리에 이러한 파일을 저장할 때 이들 파일 모두에 대해 Drawable
리소스를 생성합니다.
- 파일 위치:
res/drawable/filename.png
(.png
,.jpg
또는.gif
)
파일 이름이 리소스 ID로 사용됩니다.- 컴파일된 리소스 데이터 유형:
BitmapDrawable
에 대한 리소스 포인터입니다.- 리소스 참조:
-
Java:
R.drawable.filename
XML:@[package:]drawable/filename
- 예:
- 다음 레이아웃 XML은
res/drawable/myimage.png
에 저장된 이미지를 사용하여 이미지를 뷰에 적용합니다.<ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/myimage" />
다음 애플리케이션 코드는 이미지를
Drawable
로 가져옵니다.Kotlin
val drawable: Drawable? = ResourcesCompat.
getDrawable
(resources, R.drawable.myimage, null)Java
Resources res =
getResources()
; Drawable drawable = ResourcesCompat.getDrawable
(res, R.drawable.myimage, null); - 참고 항목:
XML 비트맵
XML 비트맵은 비트맵 파일을 가리키는, XML에 정의된 리소스입니다. 이 효과는 원시 비트맵 파일의 별칭입니다. XML은 디더링 및 타일링과 같은 비트맵 관련 추가 속성을 지정할 수 있습니다.
참고: <bitmap>
요소를 <item>
요소의 하위 요소로 사용할 수 있습니다. 예를 들어, 상태 목록이나 계층 목록을 생성할 때 <item>
요소에서 android:drawable
특성을 제외하고 이 요소 내에 드로어블 항목을 정의하는 <bitmap>
을 중첩할 수 있습니다.
- 파일 위치:
res/drawable/filename.xml
파일 이름이 리소스 ID로 사용됩니다.- 컴파일된 리소스 데이터 유형:
BitmapDrawable
에 대한 리소스 포인터입니다.- 리소스 참조:
-
Java:
R.drawable.filename
XML:@[package:]drawable/filename
- 구문:
-
<?xml version="1.0" encoding="utf-8"?> <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@[package:]drawable/drawable_resource" android:antialias=["true" | "false"] android:dither=["true" | "false"] android:filter=["true" | "false"] android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" | "fill_vertical" | "center_horizontal" | "fill_horizontal" | "center" | "fill" | "clip_vertical" | "clip_horizontal"] android:mipMap=["true" | "false"] android:tileMode=["disabled" | "clamp" | "repeat" | "mirror"] />
- 요소:
- 예:
-
<?xml version="1.0" encoding="utf-8"?> <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/icon" android:tileMode="repeat" />
- 참고 항목:
나인 패치
NinePatch
는 뷰 내부의 콘텐츠가 일반적인 이미지 범위를 초과할 때 Android가 배율을 조정하는 확장 가능한 영역을 정의할 수 있는 PNG 이미지입니다. 일반적으로 하나 이상의 치수가 "wrap_content"
로 설정된 뷰의 배경으로 이 이미지 유형을 할당하며, 뷰가 콘텐츠를 수용하도록 확장되면 나인 패치 이미지도 뷰의 크기에 맞게 배율이 조정됩니다. 나인 패치 이미지를 사용하는 경우로는 Android의 표준 Button
위젯이 사용하는 배경을 예로 들 수 있습니다. 이 배경은 버튼 내부의 텍스트(또는 이미지)를 수용하도록 확장되어야 합니다.
일반적인 비트맵과 마찬가지로, 나인 패치 파일을 직접 참조하거나 XML로 정의된 리소스에서 참조할 수 있습니다.
확장 가능한 영역이 있는 나인 패치 파일을 생성하는 방법에 대한 자세한 내용은 2D 그래픽 문서를 참조하세요.
나인 패치 파일
- 파일 위치:
res/drawable/filename.9.png
파일 이름이 리소스 ID로 사용됩니다.- 컴파일된 리소스 데이터 유형:
NinePatchDrawable
에 대한 리소스 포인터입니다.- 리소스 참조:
-
Java:
R.drawable.filename
XML:@[package:]drawable/filename
- 예:
res/drawable/myninepatch.9.png
에 저장된 이미지를 사용하여 다음 레이아웃 XML은 나인 패치를 뷰에 적용합니다.<Button android:layout_height="wrap_content" android:layout_width="wrap_content" android:background="@drawable/myninepatch" />
- 참고 항목:
XML 나인 패치
XML 나인 패치는 나인 패치 파일을 가리키는, XML에 정의된 리소스입니다. XML은 이미지에 대해 디더링을 지정할 수 있습니다.
- 파일 위치:
res/drawable/filename.xml
파일 이름이 리소스 ID로 사용됩니다.- 컴파일된 리소스 데이터 유형:
NinePatchDrawable
에 대한 리소스 포인터입니다.- 리소스 참조:
-
Java:
R.drawable.filename
XML:@[package:]drawable/filename
- 구문:
-
<?xml version="1.0" encoding="utf-8"?> <nine-patch xmlns:android="http://schemas.android.com/apk/res/android" android:src="@[package:]drawable/drawable_resource" android:dither=["true" | "false"] />
- 요소:
- 예:
-
<?xml version="1.0" encoding="utf-8"?> <nine-patch xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/myninepatch" android:dither="false" />
계층 목록
LayerDrawable
은 다른 드로어블로 구성된 배열을 관리하는 드로어블 객체입니다. 목록에 포함된 각 드로어블은 목록에 나열된 순서대로 그려집니다. 즉, 목록에서 맨 마지막에 있는 드로어블이 맨 위에 그려집니다.
각 드로어블은 단일 <layer-list>
요소 내에 있는 <item>
요소로 표현됩니다.
- 파일 위치:
res/drawable/filename.xml
파일 이름이 리소스 ID로 사용됩니다.- 컴파일된 리소스 데이터 유형:
LayerDrawable
에 대한 리소스 포인터입니다.- 리소스 참조:
-
Java:
R.drawable.filename
XML:@[package:]drawable/filename
- 구문:
-
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@[package:]drawable/drawable_resource" android:id="@[+][package:]id/resource_name" android:top="dimension" android:right="dimension" android:bottom="dimension" android:left="dimension" /> </layer-list>
- 요소:
- 예:
res/drawable/layers.xml
에 저장된 XML 파일:<?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>
이 예제에서는 중첩된
<bitmap>
요소를 사용하여 "가운데" 중력을 설정한 상태로 각 항목에 대해 드로어블 리소스를 정의하는 것을 알 수 있습니다. 오프셋 이미지로 인해 배율 조정이 발생하기 때문에 이렇게 하면 이미지의 크기가 컨테이너 크기에 맞게 조정되지 않습니다.다음 레이아웃 XML은 드로어블을 뷰에 적용합니다.
<ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/layers" />
생성되는 결과는 점점 커지는 오프셋 이미지의 스택입니다.
- 참고 항목:
상태 목록
StateListDrawable
은 객체의 상태에 따라 여러 다른 이미지를 사용하여 동일한 그래픽을 나타내는 XML에 정의된 드로어블 객체입니다. 예를 들어, Button
위젯은 여러 다른 상태(눌러진 상태, 포커스가 있는 상태 또는 둘 모두에 해당하지 않는 상태) 중 하나에 존재할 수 있으며, 상태 목록 드로어블을 사용하여 개발자는 상태별로 각각 다른 배경 이미지를 제공할 수 있습니다.
XML 파일에 상태 목록을 규정할 수 있습니다. 각 그래픽은 단일 <selector>
요소 내에 있는 <item>
요소로 표현됩니다. 각 <item>
은 다양한 특성을 사용하여 드로어블에 대한 그래픽으로 사용되는 상태를 설명합니다.
상태가 변경될 때마다 상태 목록이 맨 위부터 맨 아래까지 통과되고 현재 상태와 일치하는 첫 번째 항목이 사용됩니다. 이때 "최상의 일치" 항목이 아니라 최소 상태 기준을 충족하는 첫 번째 항목을 기준으로 항목이 선택됩니다.
- 파일 위치:
res/drawable/filename.xml
파일 이름이 리소스 ID로 사용됩니다.- 컴파일된 리소스 데이터 유형:
StateListDrawable
에 대한 리소스 포인터입니다.- 리소스 참조:
-
Java:
R.drawable.filename
XML:@[package:]drawable/filename
- 구문:
-
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" android:constantSize=["true" | "false"] android:dither=["true" | "false"] android:variablePadding=["true" | "false"] > <item android:drawable="@[package:]drawable/drawable_resource" android:state_pressed=["true" | "false"] android:state_focused=["true" | "false"] android:state_hovered=["true" | "false"] android:state_selected=["true" | "false"] android:state_checkable=["true" | "false"] android:state_checked=["true" | "false"] android:state_enabled=["true" | "false"] android:state_activated=["true" | "false"] android:state_window_focused=["true" | "false"] /> </selector>
- 요소:
- 예:
res/drawable/button.xml
에 저장된 XML 파일:<?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/button_pressed" /> <!-- pressed --> <item android:state_focused="true" android:drawable="@drawable/button_focused" /> <!-- focused --> <item android:state_hovered="true" android:drawable="@drawable/button_focused" /> <!-- hovered --> <item android:drawable="@drawable/button_normal" /> <!-- default --> </selector>
다음 레이아웃 XML은 상태 목록 드로어블을 버튼에 적용합니다.
<Button android:layout_height="wrap_content" android:layout_width="wrap_content" android:background="@drawable/button" />
- 참고 항목:
레벨 목록
대체 드로어블의 수를 관리하는 드로어블이며, 각 드로어블에는 최대 숫자 값이 할당됩니다. setLevel()
을 사용하여 드로어블의 레벨 값을 설정하면 상태 목록에서 android:maxLevel
값이 메서드에 전달된 값보다 크거나 같은 드로어블 리소스가 로드됩니다.
- 파일 위치:
res/drawable/filename.xml
파일 이름이 리소스 ID로 사용됩니다.- 컴파일된 리소스 데이터 유형:
LevelListDrawable
에 대한 리소스 포인터입니다.- 리소스 참조:
-
Java:
R.drawable.filename
XML:@[package:]drawable/filename
- 구문:
-
<?xml version="1.0" encoding="utf-8"?> <level-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/drawable_resource" android:maxLevel="integer" android:minLevel="integer" /> </level-list>
- 요소:
- 예:
-
<?xml version="1.0" encoding="utf-8"?> <level-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/status_off" android:maxLevel="0" /> <item android:drawable="@drawable/status_on" android:maxLevel="1" /> </level-list>
이 항목을
View
에 적용한 후에는setLevel()
또는setImageLevel()
을 사용하여 레벨을 변경할 수 있습니다. - 참고 항목:
전환 드로어블
TransitionDrawable
은 두 개의 드로어블 리소스 간을 크로스 페이드할 수 있는 드로어블 객체입니다.
각 드로어블은 단일 <transition>
요소 내에 있는 <item>
요소로 표현됩니다. 항목은 두 개까지만 지원됩니다. 정방향 전환을 실행하려면 startTransition()
을 호출합니다. 역방향 전환을 실행하려면 reverseTransition()
을 호출합니다.
- 파일 위치:
res/drawable/filename.xml
파일 이름이 리소스 ID로 사용됩니다.- 컴파일된 리소스 데이터 유형:
TransitionDrawable
에 대한 리소스 포인터입니다.- 리소스 참조:
-
Java:
R.drawable.filename
XML:@[package:]drawable/filename
- 구문:
-
<?xml version="1.0" encoding="utf-8"?> <transition xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@[package:]drawable/drawable_resource" android:id="@[+][package:]id/resource_name" android:top="dimension" android:right="dimension" android:bottom="dimension" android:left="dimension" /> </transition>
- 요소:
- 예:
res/drawable/transition.xml
에 저장된 XML 파일:<?xml version="1.0" encoding="utf-8"?> <transition xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/on" /> <item android:drawable="@drawable/off" /> </transition>
다음 레이아웃 XML은 드로어블을 뷰에 적용합니다.
<ImageButton android:id="@+id/button" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/transition" />
또한, 다음 코드는 첫 번째 항목에서 두 번째 항목으로 500ms 시간의 전환을 수행합니다.
Kotlin
val button: ImageButton = findViewById(R.id.button) val drawable: Drawable = button.drawable if (drawable is TransitionDrawable) { drawable.startTransition(500) }
Java
ImageButton button = (ImageButton) findViewById(R.id.button); Drawable drawable = button.getDrawable(); if (drawable instanceof TransitionDrawable) { ((TransitionDrawable) drawable).startTransition(500); }
- 참고 항목:
인셋 드로어블
지정된 거리만큼 다른 드로어블을 인셋하는, XML에 정의된 드로어블입니다. 이 드로어블은 뷰가 뷰의 실제 범위보다 작은 백그라운드를 필요로 할 때 유용합니다.
- 파일 위치:
res/drawable/filename.xml
파일 이름이 리소스 ID로 사용됩니다.- 컴파일된 리소스 데이터 유형:
InsetDrawable
에 대한 리소스 포인터입니다.- 리소스 참조:
-
Java:
R.drawable.filename
XML:@[package:]drawable/filename
- 구문:
-
<?xml version="1.0" encoding="utf-8"?> <inset xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/drawable_resource" android:insetTop="dimension" android:insetRight="dimension" android:insetBottom="dimension" android:insetLeft="dimension" />
- 요소:
- 예:
-
<?xml version="1.0" encoding="utf-8"?> <inset xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/background" android:insetTop="10dp" android:insetLeft="10dp" />
- 참고 항목:
클립 드로어블
이 드로어블의 현재 레벨을 기준으로 다른 드로어블을 클립하는, XML에 정의된 드로어블입니다. 레벨을 기준으로 너비와 높이 차원에서 클립할 하위 드로어블의 수를 제어할 수 있을 뿐만 아니라, 중력을 설정하여 전체 컨테이너에서 배치되는 위치를 제어할 수도 있습니다. 진행률 표시줄과 같은 항목을 구현하는 데 가장 많이 사용됩니다.
- 파일 위치:
res/drawable/filename.xml
파일 이름이 리소스 ID로 사용됩니다.- 컴파일된 리소스 데이터 유형:
ClipDrawable
에 대한 리소스 포인터입니다.- 리소스 참조:
-
Java:
R.drawable.filename
XML:@[package:]drawable/filename
- 구문:
-
<?xml version="1.0" encoding="utf-8"?> <clip xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/drawable_resource" android:clipOrientation=["horizontal" | "vertical"] android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" | "fill_vertical" | "center_horizontal" | "fill_horizontal" | "center" | "fill" | "clip_vertical" | "clip_horizontal"] />
- 요소:
- 예:
res/drawable/clip.xml
에 저장된 XML 파일:<?xml version="1.0" encoding="utf-8"?> <clip xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/android" android:clipOrientation="horizontal" android:gravity="left" />
다음 레이아웃 XML은 클립 드로어블을 뷰에 적용합니다.
<ImageView android:id="@+id/image" android:background="@drawable/clip" android:layout_height="wrap_content" android:layout_width="wrap_content" />
다음 코드는 드로어블을 가져온 후 이미지가 점진적으로 표시되도록 클립 정도를 늘립니다.
Kotlin
val imageview: ImageView = findViewById(R.id.image) val drawable: Drawable = imageview.background if (drawable is ClipDrawable) { drawable.level = drawable.level + 1000 }
Java
ImageView imageview = (ImageView) findViewById(R.id.image); Drawable drawable = imageview.getBackground(); if (drawable instanceof CLipDrawable) { ((ClipDrawable)drawable).setLevel(drawable.getLevel() + 1000); }
레벨을 늘리면 클립 정도가 줄어들고 이미지가 천천히 표시됩니다. 다음은 레벨이 7,000인 경우입니다.
참고: 기본 레벨은 0이며, 이 경우 완전히 클립되므로 이미지가 표시되지 않습니다. 레벨이 10,000이면 이미지가 클립되지 않고 완전히 표시됩니다.
- 참고 항목:
배율 조정 드로어블
현재 레벨을 기준으로 다른 드로어블의 크기를 변경하는, XML에 정의된 드로어블입니다.
- 파일 위치:
res/drawable/filename.xml
파일 이름이 리소스 ID로 사용됩니다.- 컴파일된 리소스 데이터 유형:
ScaleDrawable
에 대한 리소스 포인터입니다.- 리소스 참조:
-
Java:
R.drawable.filename
XML:@[package:]drawable/filename
- 구문:
-
<?xml version="1.0" encoding="utf-8"?> <scale xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/drawable_resource" android:scaleGravity=["top" | "bottom" | "left" | "right" | "center_vertical" | "fill_vertical" | "center_horizontal" | "fill_horizontal" | "center" | "fill" | "clip_vertical" | "clip_horizontal"] android:scaleHeight="percentage" android:scaleWidth="percentage" />
- 요소:
- 예:
-
<?xml version="1.0" encoding="utf-8"?> <scale xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/logo" android:scaleGravity="center_vertical|center_horizontal" android:scaleHeight="80%" android:scaleWidth="80%" />
- 참고 항목:
셰이프 드로어블
XML에 정의된 일반 셰이프입니다.
- 파일 위치:
res/drawable/filename.xml
파일 이름이 리소스 ID로 사용됩니다.- 컴파일된 리소스 데이터 유형:
GradientDrawable
에 대한 리소스 포인터입니다.- 리소스 참조:
-
Java:
R.drawable.filename
XML:@[package:]drawable/filename
- 구문:
-
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape=["rectangle" | "oval" | "line" | "ring"] > <corners android:radius="integer" android:topLeftRadius="integer" android:topRightRadius="integer" android:bottomLeftRadius="integer" android:bottomRightRadius="integer" /> <gradient android:angle="integer" android:centerX="float" android:centerY="float" android:centerColor="integer" android:endColor="color" android:gradientRadius="integer" android:startColor="color" android:type=["linear" | "radial" | "sweep"] android:useLevel=["true" | "false"] /> <padding android:left="integer" android:top="integer" android:right="integer" android:bottom="integer" /> <size android:width="integer" android:height="integer" /> <solid android:color="color" /> <stroke android:width="integer" android:color="color" android:dashWidth="integer" android:dashGap="integer" /> </shape>
- 요소:
- 예:
res/drawable/gradient_box.xml
에 저장된 XML 파일:<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:startColor="#FFFF0000" android:endColor="#80FF00FF" android:angle="45"/> <padding android:left="7dp" android:top="7dp" android:right="7dp" android:bottom="7dp" /> <corners android:radius="8dp" /> </shape>
다음 레이아웃 XML은 셰이프 드로어블을 뷰에 적용합니다.
<TextView android:background="@drawable/gradient_box" android:layout_height="wrap_content" android:layout_width="wrap_content" />
다음 애플리케이션 코드는 셰이프 드로어블을 가져와서 뷰에 적용합니다.
Kotlin
val shape: Drawable? =
getDrawable
(resources
, R.drawable.gradient_box,getTheme()
) val tv: TextView = findViewById(R.id.textview) tv.background = shapeJava
Resources res =
getResources()
; Drawable shape = ResourcesCompat.getDrawable
(res, R.drawable.gradient_box,getTheme()
); TextView tv = (TextView)findViewById(R.id.textview); tv.setBackground(shape);- 참고 항목: