Welcome! Everything is fine.

[Android] λ“œλ‘œμ–΄λΈ” λ§Œλ“€κΈ° λ³Έλ¬Έ

Android

[Android] λ“œλ‘œμ–΄λΈ” λ§Œλ“€κΈ°

개발곰발 2022. 3. 2.
728x90

πŸ“Œλ“œλ‘œμ–΄λΈ”(Drawable)

  • λ“œλ‘œμ–΄λΈ”μ€ 뷰에 μ„€μ •ν•  수 μžˆλŠ” 객체이며, κ·Έ μœ„μ— κ·Έλž˜ν”½μ„ 그릴 수 μžˆλ‹€. λ˜ν•œ λ“œλ‘œμ–΄λΈ”μ„ μ΄μš©ν•˜μ—¬ μƒνƒœμ— 따라 κ·Έλž˜ν”½μ΄λ‚˜ 이미지가 μ„ νƒμ μœΌλ‘œ 보이게 ν•  수 μžˆλ‹€.
  • κ°€μž₯ 많이 μ‚¬μš©ν•˜λŠ” λ“œλ‘œμ–΄λΈ”μ€ μƒνƒœ λ“œλ‘œμ–΄λΈ”κ³Ό 셰이프 λ“œλ‘œμ–΄λΈ”μ΄λ‹€.

πŸ“Œμƒνƒœ λ“œλ‘œμ–΄λΈ” λ§Œλ“€κΈ°

  • μƒνƒœ λ“œλ‘œμ–΄λΈ”μ€ 뷰의 μƒνƒœμ— 따라 뷰에 보여쀄 κ·Έλž˜ν”½μ„ λ‹€λ₯΄κ²Œ μ„€μ •ν•  수 μžˆλ‹€.

<item>νƒœκ·Έμ˜ drawable μ†μ„±μ—λŠ” μ΄λ―Έμ§€λ‚˜ λ‹€λ₯Έ κ·Έλž˜ν”½μ„ μ„€μ •ν•˜μ—¬ 화면에 보여쀄 수 있고, state_둜 μ‹œμž‘ν•˜λŠ” 속성은 μƒνƒœλ₯Ό λ‚˜νƒ€λ‚Έλ‹€. state_pressed 속성은 눌린 μƒνƒœλ₯Ό μ˜λ―Έν•œλ‹€. μ•„λž˜ 예제λ₯Ό 보면 화면에 finger 이미지가 보이되, 이미지 λ²„νŠΌμ΄ λˆŒλ Έμ„ λ•ŒλŠ” finger_pressed 이미지가 보이게 λœλ‹€.

앱을 μ‹€ν–‰ν•˜λ©΄ μ•„λž˜μ™€ 같이 λ²„νŠΌμ΄ λˆŒλ¦¬μ§€ μ•Šμ•˜μ„ λ•Œμ™€ λˆŒλ Έμ„ λ•Œ λ‹€λ₯Έ 이미지가 λ‚˜νƒ€λ‚˜λŠ” 것을 λ³Ό 수 μžˆλ‹€.

πŸ“Œμ…°μ΄ν”„ λ“œλ‘œμ–΄λΈ” λ§Œλ“€κΈ°

  • 셰이프 λ“œλ‘œμ–΄λΈ”μ€ XML둜 λ„ν˜•μ„ 그릴 수 있게 ν•΄μ£ΌλŠ” λ“œλ‘œμ–΄λΈ”μ΄λ‹€.
  • μ΅œμƒμœ„ νƒœκ·Έμ—μ„œ <selector> νƒœκ·Έλ₯Ό μ‚¬μš©ν•œ μƒνƒœ λ“œλ‘œμ–΄λΈ”κ³Ό 달리 셰이프 λ“œλ‘œμ–΄λΈ”μ€ <shape> νƒœκ·Έλ₯Ό μ‚¬μš©ν•œλ‹€.

μœ„μ˜ 예제λ₯Ό κ°„λ‹¨νžˆ μ‚΄νŽ΄λ³΄λ©΄

  • shapeλΌλŠ” 속성을 μΆ”κ°€ν•˜μ—¬ 속성 κ°’μœΌλ‘œ rectangle을 μž…λ ₯ν•˜μ—¬ μ‚¬κ°ν˜•μ„ 그릴 수 있게 ν•˜μ˜€λ‹€.
  • <size> νƒœκ·Έμ—μ„œ λ„ν˜•μ˜ 크기λ₯Ό μ§€μ •ν•˜κΈ° μœ„ν•΄ width와 height 속성을 μ΄μš©ν•˜μ˜€λ‹€.
  • <stroke> νƒœκ·Έλ‘œ ν…Œλ‘λ¦¬ μ„ μ˜ 속성을 μ§€μ •ν•˜κΈ° μœ„ν•΄ width와 color 속성을 μ΄μš©ν•˜μ˜€λ‹€.
  • <solid> νƒœκ·Έλ‘œ λ„ν˜• μ•ˆμͺ½μ„ 채웠닀.
  • <padding> νƒœκ·Έλ‘œ ν…Œλ‘λ¦¬ μ•ˆμͺ½ 곡간을 λ„μ› μœΌλ©°, bottom 속성을 μ΄μš©ν•˜μ—¬ μ•„λž˜μͺ½μ—λ§Œ padding을 λΆ€μ—¬ν–ˆλ‹€.

μœ„μ˜ μ˜ˆμ œλŠ” κ·ΈλΌλ°μ΄μ…˜μ„ μ€€ μ˜ˆμ œμ΄λ‹€. <shape> νƒœκ·Έ μ•ˆμ— <gradient>λ₯Ό λ„£μœΌλ©΄ κ·ΈλΌμ΄λ°μ΄μ…˜μ„ λ§Œλ“€ 수 μžˆλ‹€. startColor, centerColor, endColorλ₯Ό μ΄μš©ν•΄ μ‹œμž‘, 쀑간, 끝 λΆ€λΆ„μ˜ 색상을 지정할 수 μžˆλ‹€. μ΄λ ‡κ²Œ λ§Œλ“  ν›„ μ΅œμƒμœ„ λ ˆμ΄μ•„μ›ƒμ˜ background 속성 값을 @drawable/back_drawable둜 λ°”κΎΈλ©΄ 배경색을 κ·ΈλΌλ°μ΄μ…˜μœΌλ‘œ λ°”κΏ€ 수 μžˆλ‹€.

μœ„ μ˜ˆμ œλŠ” λ²„νŠΌμ˜ 배경을 투λͺ…ν•˜κ²Œ λ§Œλ“€μ–΄ ν…Œλ‘λ¦¬λ§Œ μžˆλŠ” λ²„νŠΌμ„ λ§Œλ“  것이닀. <layer-list> νƒœκ·Έλ₯Ό μ΄μš©ν•˜λ©΄ μ—¬λŸ¬ 개의 κ·Έλž˜ν”½μ„ ν•˜λ‚˜μ˜ XMLνŒŒμΌμ— 넣을 수 μžˆλ‹€.