학교 공부/안드로이드 프로그래밍_코드

안드로이드 프로그래밍_직접 풀어보기 9-1 코드

_빌런 2022. 5. 3. 15:04
// JAVA Code


package com.example.example_9_1;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.RectF;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // setContentView(R.layout.activity_main);
        setContentView(new MyGraphicView(this));

    }

    private static class MyGraphicView extends View {
        public MyGraphicView(Context context) {
            super(context);
        }

        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            Paint paint = new Paint();
            paint.setAntiAlias(true);
            // 색상차가 뚜렷한 경계 부근에 중간색을 삽입하여 도형이나 글꼴이 주변 배경과 부드럽게 잘 어울리도록 하는 기법

            // setStrokeWidth();
            // drawLine을 할 때 선의 두께를 지정하는 함수, 단위는 px

            /* setStrokeCap(Paint.Cap cap) - 선의 끝나는 지점의 장식을 설정합니다.
            BUTT : 그 정해진 위치에서 끝납니다.
            ROUND : 둥근 모양으로 끝이 장식됩니다.
            SQUARE : 사각형 모양이며, 해당 좌표보다 조금더 길게 그려 집니다. */

            /* void drawOval(RectF rect, Paint paint) - Oval에 내접하는 타원을 출력한다. */

            /* Paint.setColor(Color.argb) - alpha는 투명값을 의미한다. a, r, g, b, */

            //paint.setStyle(Paint.Style.FILL);
            Rect rect1 = new Rect(100, 60, 100+600, 60+100);
            canvas.drawRect(rect1, paint);

            paint.setStrokeWidth(100);
            paint.setStrokeCap(Paint.Cap.ROUND);
            canvas.drawLine(100, 250, 100+600, 250, paint);

            //paint.setStyle(Paint.Style.FILL);
            RectF rect2 = new RectF(100, 350, 100+600, 350+200);
            canvas.drawOval(rect2, paint);

            RectF rect3 = new RectF(100, 500, 100+300, 500+300);
            canvas.drawArc(rect3, 40, 105, true, paint);

            Rect rect4 = new Rect(100, 850, 100+300, 850+300);
            paint.setColor(Color.argb(50, 0, 0, 255));
            canvas.drawRect(rect4, paint);

            Rect rect5 = new Rect(200, 950, 200+300, 950+300);
            paint.setColor(Color.argb(50, 255, 0, 0));
            canvas.drawRect(rect5, paint);
        }
    }
}