是的,Android的drawCircle
方法本身不支持多点触控。但是,您可以通过扩展View
类并重写其onTouchEvent
方法来实现多点触控支持。
以下是一个简单的示例,展示了如何在自定义视图中处理多点触控以绘制多个圆:
import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Point; import android.util.AttributeSet; import android.view.MotionEvent; import androidx.appcompat.widget.AppCompatView; import java.util.ArrayList; import java.util.List; public class MultiTouchDrawView extends AppCompatView { private Listpoints = new ArrayList<>(); private Paint paint = new Paint(); public MultiTouchDrawView(Context context) { super(context); init(); } public MultiTouchDrawView(Context context, AttributeSet attrs) { super(context, attrs); init(); } public MultiTouchDrawView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } private void init() { paint.setColor(Color.BLACK); paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(5); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); for (Point point : points) { canvas.drawCircle(point.x, point.y, 50, paint); } } @Override public boolean onTouchEvent(MotionEvent event) { int action = event.getActionMasked(); switch (action) { case MotionEvent.ACTION_DOWN: points.add(new Point(event.getX(), event.getY())); break; case MotionEvent.ACTION_MOVE: points.add(new Point(event.getX(), event.getY())); break; case MotionEvent.ACTION_UP: break; case MotionEvent.ACTION_CANCEL: break; } invalidate(); return true; } }
在这个示例中,我们创建了一个名为MultiTouchDrawView
的自定义视图类。在onTouchEvent
方法中,我们处理了ACTION_DOWN
和ACTION_MOVE
事件,将触摸点的坐标添加到points
列表中。然后,在onDraw
方法中,我们遍历points
列表并为每个点绘制一个圆。这样,您就可以实现多点触控来绘制多个圆了。