original source : https://youtu.be/nMP6fDNtbfY

image

Drawable obj는 내부에 getIntrinsicHeight(), getIntrinsicWidth() 함수들을 구현해서 외부에서 이 함수를 호출했을때 Drawable이 실제 그려지는 부분의 크기를 되돌린다.

Drawable obj는 내부에 setLevel(), setState() 함수들을 구현해서 각 level, state에 맞게 drawable obj가 행동하도록 만든다.

Drawable.Callback interface는 invalidateDrawable(),scheduleDrawable(),unscheduleDrawable()들을 구현해야 한다. 참조) https://developer.android.com/reference/android/graphics/drawable/Drawable.Callback

image
image

=========================================================

.

.

아래는 custom view내부에서 drawable을 사용하는 경우를 보여주고 있다

image

=========================================================

.

.

Drawable 자체를 만드는 과정

image
image
image

=========================================================

.

.

image

개발자가 새로운 Layout을 만들고 그 안에서 새로누 LayoutParams를 만들어 사용하는 경우 Layout class 안에 generatedLayouParams(), generateDefaultLayoutParams(), checkLayoutParams()를 구현해 주어야 한다.

image

original source : https://youtu.be/8UP9JFSNl1U

이 강의에서 예제 코드는 image 와 text를 같이 보여주는 compound view를 구현한다.

merge를 통해 설정하지 못한 속성을 아래와 같이 해서 구현한다.