ยซ   2025/02   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Archives
Recent Posts
02-08 13:57

Today
Total

Recent Comments
๊ด€๋ฆฌ ๋ฉ”๋‰ด

์—ฐ์˜ ๊ธฐ๋ก ๐Ÿช

[์ƒํƒœ ๋“œ๋กœ์–ด๋ธ”(StateListDrawable)] ์ด๋ฏธ์ง€ ๋ฒ„ํŠผ ๋งŒ๋“ค๊ธฐ ๋ฐ ์ด๋ฏธ์ง€ ๋ฐ”๊พธ๊ธฐ ๋ณธ๋ฌธ

etc

[์ƒํƒœ ๋“œ๋กœ์–ด๋ธ”(StateListDrawable)] ์ด๋ฏธ์ง€ ๋ฒ„ํŠผ ๋งŒ๋“ค๊ธฐ ๋ฐ ์ด๋ฏธ์ง€ ๋ฐ”๊พธ๊ธฐ

kite707 2021. 7. 12. 01:34

๋ฒ„ํŠผ์˜ background ์†์„ฑ์„ ์ด๋ฏธ์ง€๋กœ ์„ค์ •ํ•˜๋ฉด ์ด๋ฏธ์ง€๋Š” ๋ณ€ํ™”๊ฐ€ ์—†๋‹ค. ์ด๋ฒˆ์—๋Š” ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ด๋ฏธ์ง€๊ฐ€ ๋ฐ”๋€Œ๋Š” ๋ฒ„ํŠผ์„ ๋งŒ๋“ค ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋“œ๋กœ์–ด๋ธ”(Drawable)์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

Drawable์ด๋ž€?

์ƒํƒœ์— ๋”ฐ๋ผ ๊ทธ๋ž˜ํ”ฝ์ด๋‚˜ ์ด๋ฏธ์ง€๊ฐ€ ์„ ํƒ์ ์œผ๋กœ ๋ณด์ด๊ฒŒ ํ•ด์ค€๋‹ค. ๋“œ๋กœ์–ด๋ธ”์˜ ์ข…๋ฅ˜๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

๋“œ๋กœ์–ด๋ธ” ์„ค๋ช…
๋น„ํŠธ๋งต ๋“œ๋กœ์–ด๋ธ”(BitmapDrawable) ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ๋ณด์—ฌ์ค„ ๋•Œ ์‚ฌ์šฉ
๋น„ํŠธ๋งต ๊ทธ๋ž˜ํ”ฝ ํŒŒ์ผ(png, jpg, gif ๋“ฑ)์„ ์‚ฌ์šฉํ•ด์„œ ์ƒ์„ฑ
์ƒํƒœ ๋“œ๋กœ์–ด๋ธ”(StateListDrawable) ์ƒํƒœ๋ณ„๋กœ ๋‹ค๋ฅธ ๋น„ํŠธ๋งต ๊ทธ๋ž˜ํ”ฝ์„ ์ฐธ์กฐ
์ „ํ™˜ ๋“œ๋กœ์–ด๋ธ”(TransitionDrawable) ๋‘ ๊ฐœ์˜ ๋“œ๋กœ์–ด๋ธ”์„ ์„œ๋กœ ์ „ํ™˜
์…ฐ์ดํ”„ ๋“œ๋กœ์–ด๋ธ”(ShapeDrawable) ์ƒ‰์ƒ๊ณผ ๊ทธ๋ผ๋ฐ์ด์…˜์„ ํฌํ•จํ•˜์—ฌ ๋„ํ˜• ๋ชจ์–‘์„ ์ •์˜
์ธ์…‹ ๋“œ๋กœ์–ด๋ธ”(InsetDrawable) ์ง€์ •๋œ ๊ฑฐ๋ฆฌ๋งŒํผ ๋‹ค๋ฅธ ๋“œ๋กœ์–ด๋ธ”์„ ๋“ค์–ด์„œ ๋ณด์—ฌ์คŒ
ํด๋ฆฝ ๋“œ๋กœ์–ด๋ธ”(ClipDrawable) ๋ ˆ๋ฒจ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๋‹ค๋ฅธ ๋“œ๋กœ์–ด๋ธ”์„ ํด๋ฆฌํ•‘
์Šค์ผ€์ผ ๋“œ๋กœ์–ด๋ธ”(ScaleDrawable) ๋ ˆ๋ฒจ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๋‹ค๋ฅธ ๋“œ๋กœ์–ด๋ธ”์˜ ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝ

์—ฌ๊ธฐ์„œ ํด๋ฆฝ ๋“œ๋กœ์–ด๋ธ”์€ ์ž๋ฅผ ๋Œ€๊ณ  ์ž๋ฅธ๋‹ค๊ณ  ์ดํ•ดํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค. ์ž์„ธํžˆ ์•Œ๊ณ ์‹ถ์œผ๋ฉด ์•„๋ž˜ ๊ณต์‹ ๋ฌธ์„œ๊ฐ€ ์žˆ๋‹ค.

https://developer.android.com/guide/topics/graphics/drawables?hl=ko 

 

๋“œ๋กœ์–ด๋ธ” ๊ฐœ์š”  |  Android ๊ฐœ๋ฐœ์ž  |  Android Developers

์ •์  ์ด๋ฏธ์ง€๋ฅผ ์•ฑ์— ํ‘œ์‹œํ•ด์•ผ ํ•  ๋•Œ Drawable ํด๋ž˜์Šค์™€ ํ•˜์œ„ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋„ํ˜•๊ณผ ์ด๋ฏธ์ง€๋ฅผ ๊ทธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Drawable์€ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋Š” ํ•ญ๋ชฉ์˜ ์ผ๋ฐ˜ ์ถ”์ƒํ™”์ž…๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ์„œ๋ธŒํด๋ž˜์Šค๋Š” ํŠน์ •

developer.android.com

์ด๋“ค ์ค‘ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋“œ๋กœ์–ด๋ธ”์€ ์ƒํƒœ ๋“œ๋กœ์–ด๋ธ”, ์…ฐ์ดํ”„ ๋“œ๋กœ์–ด๋ธ”์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

์ƒํƒœ ๋“œ๋กœ์–ด๋ธ”

์ƒํƒœ ๋“œ๋กœ์–ด๋ธ”์€ ๋ทฐ์˜ ์ƒํƒœ์— ๋”ฐ๋ผ ๋ณด์—ฌ์ค„ ๊ทธ๋ž˜ํ”ฝ์„ ๋‹ค๋ฅด๊ฒŒ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฒ„ํŠผ์„ ์˜ˆ์‹œ๋กœ ๋“ค๋ฉด ๋ฒ„ํŠผ์ด ๋ˆŒ๋ ธ์„ ๋•Œ์™€ ๋ˆŒ๋ฆฌ์ง€ ์•Š์•˜์„ ๋•Œ์— ๋ฒ„ํŠผ์ด ๋‹ค๋ฅด๊ฒŒ ๋ณด์ด๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. 

 

์šฐ์„  ์•„๋ž˜์™€ ๊ฐ™์ด app/src/main/res/drawableํด๋”์— ์ด๋ฏธ์ง€๋ฅผ 2๊ฐœ ๋„ฃ์–ด๋‘์ž.

๊ทธ๋Ÿฐ ๋’ค drawableํด๋”์— xmlํŒŒ์ผ์„ ํ•˜๋‚˜ ๋งŒ๋“ค๋„๋ก ํ•˜์ž. ๋‚˜๋Š” drawable2๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ํŒŒ์ผ์„ ํ•˜๋‚˜ ๋งŒ๋“ค์—ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ ํ•ด์„œ ๋งŒ๋“ค์–ด์ง„ drawable2.xmlํŒŒ์ผ์„ ์•„๋ž˜์™€ ๊ฐ™์ด ์ˆ˜์ •ํ•œ๋‹ค.

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    //๋ฒ„ํŠผ์ด ๋ˆŒ๋ ธ์„ ๋•Œ background๊ฐ€ b๊ฐ€ ๋˜๋„๋ก ํ•œ๋‹ค
    <item android:state_pressed="true"
        android:drawable="@drawable/b"/>
    //ํ‰์†Œ์—๋Š” background๊ฐ€ a๊ฐ€ ๋˜๋„๋ก ํ•œ๋‹ค.
    <item
        android:drawable="@drawable/a"/>

</selector>

์ด์ œ ๋ฒ„ํŠผ์„ ๋งŒ๋“ค๋„๋ก ํ•˜์ž. ์•„๋ž˜์™€ ๊ฐ™์ด activity_mai.xml๋กœ ์ด๋™ํ•˜์—ฌ ๊ฐ€์šด๋ฐ์— ๋ฒ„ํŠผ์„ ํ•˜๋‚˜ ์ถ”๊ฐ€ํ•˜๋„๋ก ํ•˜์ž.

๊ทธ๋ฆฌ๊ณ  ์ขŒ์ธก์—์„œ ๋ฒ„ํŠผ์˜ background ์†์„ฑ์„ ์•„๊นŒ ๋งŒ๋“  drawable2.xml๋กœ ์ง€์ •ํ•œ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

//@drawable/์•„๊นŒ ๋งŒ๋“  ํŒŒ์ผ๋ช…
@drawable/drawable2

๊ทธ๋Ÿผ ์ด๋Ÿฐ ํ™”๋ฉด์ด ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š”๋ฐ backgroundTint์†์„ฑ ๋•Œ๋ฌธ์ด๋‹ค.

์œ„์™€ ๊ฐ™์ด ๋ณด๋ผ์ƒ‰์œผ๋กœ ํ™”๋ฉด์ด ๊ฐ€๋“ ์ฐฌ๋‹ค๋ฉด backgroundTint ์†์„ฑ๊ณผ backgroundTintMode๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฐ”๊ฟ”์ค€๋‹ค.

//backgroundTint
@android:color/transparent
//backgroundTintMode
add

๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” text๋ถ€๋ถ„์„ ์ง€์›Œ button๊ธ€์”จ๋ฅผ ์—†์•ด๋‹ค. ์„ค์ •์„ ์™„๋ฃŒํ•œ ๋ชจ์Šต์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

์ฆ‰ activity_main.xmlํŒŒ์ผ์˜ ์ „์ฒด ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/button2"
        //์ด ๋ถ€๋ถ„์„ ๋ฐ”๊ฟ” ๋ฒ„ํŠผ ํฌ๊ธฐ ์กฐ์ ˆ ๊ฐ€๋Šฅ. ๋‹จ์œ„๋Š” dp๊ถŒ์žฅ
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        
        android:background="@drawable/drawable2"
        app:backgroundTint="@android:color/transparent"
        app:backgroundTintMode="add"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

๊ทธ๋Ÿผ ์•„๋ž˜์™€ ๊ฐ™์ด ํด๋ฆญํ•  ๋•Œ๋งˆ๋‹ค ์ด๋ฏธ์ง€๊ฐ€ ๋ฐ”๋€Œ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.