* 2021. 3. 9 작성
### #0 Android Canvas 란?
Canvas는 안드로이드 플랫폼에 포함되어있는 클래스로써 2차원적인 오브젝트를 화면에 그리는 것을 돕습니다. 일종의 도화지라고 생각하시면 편합니다.
### #1 Canvas 사용법
안드로이드에서 캔버스를 사용하기 위해서는 아래와 같은 것들이 필요합니다.
1. **Bitmap** 또는 **View** : 캔버스에 그려질 픽셀들을 관리
2. **Canvas** : 그리기 명령어를 수행하기 위함
3. **그리기 명령** : 캔버스에 무엇을 그릴 것인지 나타낸다.
4. **Paint** : 그리기 명령을 어떻게 꾸밀것인지 묘사합니다.
먼저 캔버스 인스턴스에 접근을 해야하는데 캔버스 인스턴스에 접근하기 위해서는 기존 View클래스를 확장해야합니다. onDraw메소드를 재정의 하여 Canvas를 파라미터로 얻을 수 있기 때문입니다.
``` kotlin
class CustomView @JvmOverloads constructor(context: Context,
attrs: AttributeSet? = null, defStyleAttr: Int = 0)
: View(context, attrs, defStyleAttr) {
// 뷰의 내용이 렌더링 될때 호출 됩니다
override fun onDraw(canvas: Canvas?) {
super.onDraw(canvas)
// Content
}
}
```
레이아웃 XML에서 이 커스텀뷰를 사용할 수 있고 자동으로 onDraw가 호출되어 화면에 나타나게 될것입니다.
``` xml
<com.worldSkills.CustomView
android:layout_width="200dp"
android:layout_height="300dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
```
그러고 난 다음 코드로 캔버스를 만들고 캔버스 객체에 접근할 수 있습니다.
``` kotlin
val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
val canvas = Canvas(bitmap)
```
해당 캔버스에 drawBitmap 메서드를 사용하면 쉽게 draw 할 수 있습니다.
코드의 두번째 인자로 그리고 싶은 비트맵의 일부를 전달 할 수 있는데, null을 넘기면 bitmap 전체를 렌더링 하게 됩니다. 세번째 인자는 RectF 객체로 화면에 그리고 싶은 비율과 위치를 결정합니다.
``` kotlin
canvas.drawBitmap(bitmap, null, rect, paint)
```
'IT > Android (안드로이드)' 카테고리의 다른 글
Android N.3-5 Android Property Animations (0) | 2025.04.21 |
---|---|
Android N.3-4 Clipping Canvas Objects (0) | 2025.04.21 |
Android N.3-2 Creating Custom Views (0) | 2025.04.21 |
Android N.3-1 Using Notification (0) | 2025.04.21 |
Android N.2-5 Designing for Everyone (0) | 2025.04.21 |