Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 코틀린
- CustomView
- 알림
- AppBarLayout
- activity
- 알고리즘
- CoordinatorLayout
- hilt
- 안드로이드
- Coroutine
- ViewModel
- View
- sqlite
- kotlin
- CollapsingToolbarLayout
- notification
- room
- DataBinding
- onLayout
- Behavior
- lifecycle
- BOJ
- onMeasure
- Android
- Algorithm
- 백준
- HTTP
- Navigation
- recyclerview
- LiveData
Archives
- Today
- Total
개발일지
Android in A..Z - View (개념) 본문
Android는 View와 ViewGroup을 통해 UI를 구축하여 사용자와 상호작용할 수 있다. 기본적으로 Button, TextView 등의 View와 ConstraintLayout, LinearLayout 등의 ViewGroup을 제공하기 때문에 쉽게 앱을 제작할 수 있다.
하지만 기본적으로 제공하는 View와 ViewGroup으로 원하는 UI를 구축할 수 없는 경우가 있으며, 이런 경우 View와 ViewGroup을 상속받아 직접 구현할 수 있고 기존의 정의된 View를 상속받아 기능을 확장할 수 있다.
View Method
View에서 제공하는 Method를 재정의하면서 View를 Custom화 할 수 있다.
구분 | 함수 | 설명 |
생성 | constructor(Context) | 코드에서 View를 생성할 때 |
constructor(Context, AttributeSet) | XML에서 View를 생성할 때 | |
constructor(Context, AttributeSet, Int) | ThemeStyle과 함께 XML에서 View를 생성할 때 | |
constructor(Context, AttributeSet, Int, Int) | ThemeStyle 또는 Style로 XML에서 View를 생성할 때 | |
onFinishInflate() | View 및 View의 모든 자식이 XML에서 확정되었을 때 | |
레이아웃 | onMeasure(Int, Int) | View의 크기를 측정할 때 |
onLayout(Boolean, Int, Int, Int, Int) | View의 위치를 측정할 때 | |
onSizeChanged(Int, Int) | View의 크기가 변경됐을 때 | |
그리기 | onDraw(Canvas) | View를 그릴 때 사용 |
이벤트 | onKeyDown(Int, KeyEvent) | 새 이벤트가 발생할 때 |
onKeyUp(Int, KeyEvent) | 새 이벤트를 수행할 때 | |
포커스 | onFocusChanged(Boolean, Int, Rect) | 포커스 변화가 생겼을 때 |
onWindowFocusChanged(Boolean) | View가 포함된 Window의 포커스 변화가 생겼을 때 | |
연결 | onAttachedToWindow() | addView를 통해 View가 Window에 연결될 때 |
onDetachedFromWindow() | Activity가 소멸되거나 코드상으로 View가 Window에 분리될 때 | |
onWindowVisibilityChanged(Int) | Window의 가시성 변화가 생겼을 때 |
View 생명주기
measure, onMeasure / layout, onLayout => measure과 layout은 final 함수로 선언되었다. 그 이유는 onMeasure과 onLayout을 재정의하고 호출은 measure과 layout을 통해 onMeasure과 onLayout을 호출하기 위함이다.
invalidate() vs requestLayout() => invalidate()는 View를 새롭게 그리는 반면 requestLayout()은 View의 크기와 위치를 다시 계산 후 View를 그린다.
Git (예제코드)
github.com/KangTaeJong98/Example/tree/main/Android/CustomView
'Android (안드로이드) > View' 카테고리의 다른 글
Android in A..Z - View (CustomView-Extend) (0) | 2021.04.30 |
---|---|
Android in A..Z - View (CustomViewGroup) (0) | 2021.04.30 |
Android in A..Z - View (MeasureSpec) (0) | 2021.04.29 |
Android in A..Z - View (CustomView) (0) | 2021.04.29 |
Android in A..Z - View (AttributeSet) (0) | 2021.04.29 |
Comments