You can draw a circle with a custom view, then you can draw anything to the canvas. Example:
package com.example.customcircle;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import androidx.annotation.Nullable;
public class CustomCircle extends View {
private Paint paint = null;
public CustomCircle(Context context) {
super(context);
init();
}
public CustomCircle(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init();
}
public CustomCircle(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
public CustomCircle(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init();
}
private void init() {
paint = new Paint();
paint.setStyle( Paint.Style.FILL );
paint.setColor( Color.BLACK );
}
@Override
protected void onDraw(Canvas canvas) {
int radius = 300;
canvas.drawCircle(getWidth() / 2, getHeight() / 2, radius, paint );
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return super.onTouchEvent(event);
// handle touch
}
}
Usage:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
tools:context=".MainActivity">
<com.example.custumcircle.CustomCircle
android:id="@+id/custumCircle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>