티스토리 뷰

Computer/Android&iOS

Custom View Functions

ywlee 2022. 11. 10. 18:51

 

 

 

 

view lifecycle

 

Custom view 등을 만들때, 유의해야 할 view life cycle

기본적으로, 

내 크기 측정(measure) > 내 위치 측정(layout) > 그림(draw)

순으로 흘러감

 

measure() , onMeasure() 

내 크기를 측정할 때, 대부분 내가 포함하고 있는 자식의 크기를 먼저 알아야 내 크기를 알 수 있는 경우가 많기 때문에,

내 자식 뷰들을 순회하면서 크기를 받아서 최종적으로 내 크기를 그림

이 단계가 모두 끝나면 onMeasure() 가 호출되고, onMeasure() 에서 얻어온 width, height 로 크기를 가늠 할 수 있음.

 

이 과정에서 추측할 수 있듯이, layout 구조를 그릴 때, 

뷰 뎊스가 깊어지면 깊어질 수록, measure() 시간이 오래걸림.

 

layout(), onLayout()

내 부모뷰를 기준으로 left, right, top, bottom 인자가 넘어온다. 

이 때, 과정이 마무리되면, View 에 등록된 layout changed listener 를 모두 호출하여 콜백을 보내서, 내 레이아웃의 위치 (old Position + new Position) 을 알려준다.

 

draw(), onDraw() 

일반적으로 만질 상황은 많지 않으며, 

그래프등을 그릴 때, draw() 에서 인자로 넘어오는 canvas 에 paint 를 추가하는 식으로 사용 가능함

 

 

 

 

 

 

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 29 30 31
글 보관함