황진호

황진호

공부한걸 요약해서 기록해놓는 블로그

[Doit! 안드로이드 앱 프로그래밍] Drawable

최대 1 분 소요

참고서적: Doit 안드로이드 앱 프로그래밍



위젯들중 대표적으로 많이사용하는 기본적인 위젯들중 책에서 소개하는것들은 다음과같다.


  1. TextView
  2. Button
  3. EditText
  4. ImageView
  5. ImageButton

그속성들은 이후의 포스팅예제들에서 아주많이 다루게되므로 따로 소개는 하지않겠다.

Drawable은 view의 디자인에 관여하는 요소이다.

위의 위젯들과 같은 모든 view의 요소에 그림을 넣거나, 원하는 모양 혹은 색상, 그라데이션 등등 디자인적인 부분에대해 사용되어진다.

방법은 view들의 background 속성에 만들어진 drawable을 참조하면 된다. 아주간단하다.

이 Dawable의 종류로는 다양한 종류가 있지만, 가장많이 사용하는 종류는 StateListDrawable 과 shapeDrawable 이다.

StateListDrawable은 view의 상태에 따라 그래픽을 지정할수있다.

버튼을 예로들면, 버튼이 눌렷을때 와 눌럿다가 떼어졋을때 등등 그 상태에따른 버튼의 그래픽 을 지정할수 있게된다.

StateListDrawable의 xml파일의 최상위 태그는< selector> 이다. 그 안에는 < item> 태그를 넣어 각각의 상태에 따라 item 태그들을 정의하면 된다.

ShapeDrawable은 XML로 도형을 그릴수있는 drawable 이다. 최상위태그가 < shape> 이고, 태그속성 shape에 속성값을넣어 원하는 모양을 만들수있다. 예를들어 shape="rectangle"로 하면 사각형 모양을 만들수있다.

< shape> 속성 안에는 < size> , < stroke>, < solid> , < padding>, < corners> , < gradient> 가있다.

순서대로 size는 view의 크기를 지정, stroke는 view의 테두리를 결정, solid는 view의 테두리안의 색상을결정, padding은 테두리 안쪽공간의 content위치를 결정, gradient는 그라데이션을 만들수있다.

마지막으로, 여러개의 그래픽을 하나에 xml에 넣기위해서는 최상위태그를 < layer-list>로 작성하고 그하위에 < item>태그를 넣어 각각의 item에 원하는 drawable을 작성하면 된다.

drawable

위의 모든예제들에 대한 코드는 깃허브주소 에있다.

태그:

카테고리:

업데이트:

공유하기

Twitter Facebook LinkedIn

댓글남기기

참고

[Kotlin] Annotation 생성 및 활용 방법

6 분 소요

보통 어떤 기능을 만들기 위해 클래스나 인터페이스를 생성하고, 프로퍼티와 함수를 구현하고 이용합니다. 이렇게 생성된 클래스의 프로퍼티나 함수를 이용하여 캡슐화된 특정 기능을 호출 및 참조할 수 있습니다.

[Kotlin] Coroutine - 예외처리

17 분 소요

코루틴을 생성하기 위해서는 간단하게 Coroutine Builder 함수인 launch() 와 async() 를 이용하여 새로운 코루틴을 생성할 수 있습니다. 코루틴 빌더는 CoroutineScope 의 확장함수로써 기본적으로 상위 CoroutineScope 의 CoroutineC...

[Kotlin] 동시성 문제와 해결방법

10 분 소요

소프트웨어를 개발하는 데 있어서, 성능을 높이기 위해 가장 흔하게 사용할 수 있는 방법은 병렬로 실행하는 것 입니다. 병렬 실행은 하드웨어의 특성을 이용하여 성능을 높이는 가장 좋은 방법이지만, 병렬로 여러 프로세스나 스레드에서 같은 데이터를 접근하여 읽고 쓰는 과정이 수행될 때,...

[Compose] Compose Compiler

17 분 소요

최근들어 Compose 를 UI toolkit 으로 많이 사용하고 있습니다. 저 역시 마찬가지로 기존의 xml 기반의 뷰 작업들을 모두 Compose 로 migration 한 뒤로, 새로운 기능을 개발할 때 Compose 로 개발하고 있습니다. Compose 를 사용하고는 있지만...