안드로이드

안드로이드 Canvas, Paint 로 좌표에 점 찍기

알통몬_ 2018. 5. 9. 11:47
반응형


공감 및 댓글은 포스팅 하는데

 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 

도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 

만들어 나가겠습니다^^

 


안드로이드에서 화면 위에 그림을 그리는 방법에 대해 알아봅니다.


저는 간단하게 좌표에 점을 찍는 포스팅을 하려고 합니다.


정말 간단합니다.

먼저 레이아웃을 준비합니다.

activity_main.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto">
 
    <android.support.constraint.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        tools:context="altong.mon.mybeaconscanner.MainActivity">
 
        <android.support.constraint.ConstraintLayout
            android:id="@+id/mapConstLayout"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            android:layout_width="0dp"
            android:layout_height="match_parent">
 
        </android.support.constraint.ConstraintLayout>
    </android.support.constraint.ConstraintLayout>
</layout>
cs


저희는 점을 id가 mapConstLayout인 ConstraintLayout에 그릴거에요.


그리고 MainActivity.java 클래스 안에 

PointView 라는 View를 상속 받는 클래스를 선언해줍니다.

저는 이 뷰에 배경 이미지를 넣고

onDraw()메서드를 오버라이딩해서

점을 찍었습니다.

canvas.drawPoint에서 첫 번째, 두 번째 값은 각 x좌표, y좌표 값입니다.

저는 V20을 쓰고 있습니다. 1440 X 2560 해상도를 가집니다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    private class PointView extends View {
        Paint paint = new Paint();
 
        public PointView(Context context) {
            super(context);
            setBackground(getResources().getDrawable(R.drawable.nnnuri));
        }
 
        @Override
        protected void onDraw(Canvas canvas) {
            paint.setColor(Color.BLACK);
            paint.setStrokeWidth(50);
            canvas.drawPoint(740120, paint);
        }
    }
cs


그리고 onCreate() 내부 블록에서

1
binding.mapConstLayout.addView(new PointView(this));
cs

이렇게 해주면 화면에 점이 찍혀있는 걸 확인할 수 있습니다.


Canvas 클래스와 Paint 클래스의 자세한 내용들은 공식 문서에서 확인하시면 되겠습니다.

Canvas : https://developer.android.com/reference/android/graphics/Canvas

Paint : https://developer.android.com/reference/android/graphics/Paint

이상입니다.

감사합니다.

반응형