안드로이드 프로그래밍 실습 9-1 - andeuloideu peulogeulaeming silseub 9-1

Android Studio를 활용한 안드로이드 프로그래밍 P358 직접 풀어보기 9-1

그림과 같은 화면을 출력하도록 다음 메소드를 사용하여 JAVA를 코딩하라.

1. Paint.setStrokeCap()

2. Canvas.drawOval()

3. Paint.setColor(Color.argb())

<결과 화면>

안드로이드 프로그래밍 실습 9-1 - andeuloideu peulogeulaeming silseub 9-1

<MainActivity 코드>

1. 첫 번째, 두 번째 사각형 모두 사각형이 아닌 선으로 그리고, 선의 두께를 50으로 설정하여 사각형처럼 보이게 그려봤습니다.

2. 두 번 째 사각형의 경우 Paint. setStrokeCap()함수의 옵션 내부에 인자로 Paint.Cap.Round로 하여 모서리를 둥글게 표현했습니다.

3. 타원의 경우 drawOval 함수로 좌표를 설정하여 그리면 됩니다.

4. 부채꼴(호)의 경우 전체 좌표를 지정하고(사각형 처럼 4가지) 시작 지점(startAngle)과 깎을 지점(sweepAngle)을 설정하여 부채꼴 모양을 형성합니다. 깎는 좌표에 따라 원, 반원, 등 다양한 모양이 생성될 수 있습니다.

5. 부분 투명 사각형은 빨간 사각형이 반투명하기 때문에 빨간 사각형의 투명도를 조정해야합니다.  Paint.setColor(Color.argb())함수 안의 인자는 각각 투명도, R,G,B색을 의미하므로 투명도를 0~255값의 중간인120을 넣어주고 R좌표값을 255로 채웠습니다.

package com.example.p358;

import androidx.annotation.RequiresApi;
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.Build;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new MyGraphicView(this));
}

private class MyGraphicView extends View {

public MyGraphicView(Context context) {
super(context);
}

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint=new Paint();
paint.setColor(Color.BLACK);
paint.setStrokeWidth(50);

canvas.drawLine(70,70,370,70,paint);

paint.setStrokeCap(Paint.Cap.ROUND);
Rect f=new Rect(70,140,370,140);


canvas.drawOval(new RectF(70, 210, 70 + 300, 210 + 140), paint);

canvas.drawArc(new RectF(70,280,70+300,280+210),35,100,true,paint);

Rect rect1=new Rect(100,600,100+200,600+200);
paint.setColor(Color.BLUE);
canvas.drawRect(rect1,paint);

Rect rect2=new Rect(100+60,600+60,100+60+200,600+60+200);
paint.setColor(Color.argb(120,255,0,0));
canvas.drawRect(rect2,paint);

}
}
}