Java 안드로이드/안드로이드
8. 그래픽 – 1. 기본
언휴
2025. 1. 4. 08:42
이번에는 안드로이에서의 그래픽에 관해 간단히 알아보기 위한 실습을 할 거예요.

그래픽을 표현할 때에는 View 클래스에서 확장한 클래스를 정의하여 구현합니다. 그리고 기존 Activity 클래스의 onCreate 메서드에서 컨텐츠 뷰를 설정할 때 layout(activity_main.xml) 파일을 전달하였는데 여기에서는 View클래스에서 확장한 클래스 개체를 전달합니다.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new MyGraphView(this));//R.layout.activity_main);
}
private static class MyGraphView extends View{
public MyGraphView(Context context){
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
}
}
}
View에서 파생한 클래스에는 onDraw 메서드를 재정의하고 이 곳에서 실제 그리기 작업을 진행합니다. 화면에 도형을 그릴 때 사용하는 개체는 Canvas이고 이 때 펜의 두께나 색상 등의 그리기 정보를 기억할 Paint개체를 이용합니다.
Paint paint = new Paint();
paint.setStrokeWidth(20);
canvas.drawLine(10,10,300,10,paint);
paint.setColor(Color.RED);
paint.setStrokeWidth(5);
canvas.drawLine(10,40,300,40,paint);
paint.setStyle(Paint.Style.FILL);
canvas.drawRect(new Rect(10,50,100,120),paint);
paint.setStyle(Paint.Style.STROKE);
canvas.drawRect(new Rect(120,50,220,120),paint);
paint.setColor(Color.GREEN);
canvas.drawCircle(360,100,80,paint);
paint.setColor(Color.BLUE);
canvas.drawRoundRect(300,200,400,300,50,50,paint);
paint.setStrokeWidth(4);
paint.setColor(Color.GREEN);
paint.setTextSize(60);
canvas.drawText("언제나 휴일",0,200,paint);
다음은 MainActivity.java 파일의 소스 코드입니다. 참고로 activity_main.xml 파일은 필요 없습니다.
package com.example.ehclub.ex_graphic1;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Rect;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new MyGraphView(this));//R.layout.activity_main);
}
private static class MyGraphView extends View{
public MyGraphView(Context context){
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setStrokeWidth(20);
canvas.drawLine(10,10,300,10,paint);
paint.setColor(Color.RED);
paint.setStrokeWidth(5);
canvas.drawLine(10,40,300,40,paint);
paint.setStyle(Paint.Style.FILL);
canvas.drawRect(new Rect(10,50,100,120),paint);
paint.setStyle(Paint.Style.STROKE);
canvas.drawRect(new Rect(120,50,220,120),paint);
paint.setColor(Color.GREEN);
canvas.drawCircle(360,100,80,paint);
paint.setColor(Color.BLUE);
canvas.drawRoundRect(300,200,400,300,50,50,paint);
paint.setStrokeWidth(4);
paint.setColor(Color.GREEN);
paint.setTextSize(60);
canvas.drawText("언제나 휴일",0,200,paint);
}
}
}
언제나휴일 추천 여행 및 산책