일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- fragment에서 context사용
- recyclerView 클릭이벤트
- 임시저장하기
- gradle설정
- 녹음기
- LIS
- dp
- silver3
- 백준
- Android
- RETROFIT
- 프로그래머스
- 뷰클래스
- Top-Down
- 다크모드제한
- Alert Dialog
- 테마변경
- Silver5
- silver4
- stack
- map
- bronze4
- LV1
- toLong()
- bronze3
- naver open api
- bottom-up
- bronze2
- Kotlin
- RecyclerView
- Today
- Total
유니 코드
[Android] Custom Drawing 본문
커스텀뷰의 필요성
개발을 할때 애플리케이션의 요구조건에 따라 화면 구성도 조금씩 차이가 발생한다.
안드로이드에서 기본적으로 제공해주는 위젯을 사용하면 편리하지만, 화면을 구성할 적절한 뷰가 없을 때 개발자는 커스텀뷰를 생성하여 사용한다.
커스텀뷰 생성
View 또는 View의 서브클래스(ex: Button) 중 하나를 상속받는 커스텀뷰를 생성한다.
이때, context와 AttributeSet 객체를 매개변수로 취하는 생성자를 제공해야한다!
이 생성자를 사용하면 Layout Editor에서 뷰의 인스턴스를 만들고 수정할 수 있다.
class PieChart(context: Context, attrs: AttributeSet) : View(context, attrs)
이 클래스에 필요한 속성 및 이벤트를 추가하여 사용한다.
커스텀 드로잉
커스텀뷰를 그릴 때 가장 중요한 과정은 onDraw() 메소드를 오버라이드 하는 것이다.
onDraw()는 canvas 객체를 전달받고, 이 메서드를 호출하기 위해서는 Paint객체를 생성해야한다.
(canvas는 무엇을 그릴지, paint는 어떻게 그릴지 정의)
onDraw() 내부에서 paint를 생성하지 않는다.
onDraw()는 굉장히 빈번하게 호출이 되기 때문에 상대적으로 비용이 많이 드는 객체생성을 onDraw()내에서 매번하게되면 성능이 저하되고 UI가 느려질 수 있다. 따라서 onDraw()를 호출하기 전에 미리 paint를 생성해야 한다.
실제로 그려야 할 사이즈를 정확하게 파악해야 한다.
뷰의 크기를 제어할 필요가 없는 경우에는 onSizeChanged()라는 메서드만 오버라이딩하면 된다.
마지막으로 onDraw()를 구현해주고, xml파일에 커스텀를 추가해 사용한다.
참고 : 공식문서
맞춤 그리기 | Android 개발자 | Android Developers
맞춤 뷰에서 가장 중요한 부분은 디자인입니다. 맞춤 그리기는 애플리케이션의 필요에 따라 쉽거나 복잡할 수 있습니다. 이 과정에서는 가장 일반적인 작업 몇 가지에 관해 설명합니다. 맞춤 뷰
developer.android.com
'오늘의 공부는?! > Android' 카테고리의 다른 글
[Android] 뷰 클래스 ( 화면 구성) (0) | 2022.03.19 |
---|---|
[Android] 녹음기 만들기 with 코틀린(4) - 오디오 시각화(Custom Drawing) (0) | 2022.02.25 |
[Android] 녹음기 만들기 with 코틀린(3) - 녹음 기능 구현하기(MediaRecorder, MediaPlayer 사용) (0) | 2022.02.22 |
[Android] 녹음기 만들기 with 코틀린(2) - 권한 요청하기 (0) | 2022.02.22 |