프로그래밍/XML | JAVA

[안드로이드 스튜디오] 클릭하여 원 표시

Codey 2024. 5. 13. 14:01


CustomView.java

package com.example.a09_38;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.MotionEvent;
import android.view.View;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class CustomView extends View {
    private List<Circle> circles = new ArrayList<>();
    private Paint paint;

    public CustomView(Context context) {
        super(context);
        paint = new Paint();
    }

    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        for(Circle circle : circles) {
            paint.setColor(circle.color);
            canvas.drawCircle(circle.x, circle.y, circle.radius, paint);
        }
    }

    public boolean onTouchEvent(MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            Random random = new Random();
            float radius = random.nextInt(300);
            int color = Color.rgb (
                    random.nextInt(256),
                    random.nextInt(256),
                    random.nextInt(256)
            );
            float x = event.getX();
            float y = event.getY();

            circles.add(new Circle(x,y,radius,color));
            invalidate();
            return true;
        }
        return super.onTouchEvent(event);
    }

    private class Circle {
        float x, y, radius;
        int color;
        Circle(float x, float y, float radius, int color) {
            this.x = x;
            this.y = y;
            this.radius = radius;
            this.color = color;
        }
    }
}

MainActivity.java

package com.example.a09_38;

import android.os.Bundle;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        CustomView w = new CustomView(this);
        setContentView(w); // CustomView 객체를 화면에 표시합니다.
    }
}