Android 如何使用自定义视图在画布上使用单击侦听器绘制多边形?
请给我任何建议或需要您的帮助,设置点击侦听器的多边形,我已经实现了下面的代码绘制多边形使用自定义视图Android 如何使用自定义视图在画布上使用单击侦听器绘制多边形?,android,canvas,onclicklistener,android-custom-view,Android,Canvas,Onclicklistener,Android Custom View,请给我任何建议或需要您的帮助,设置点击侦听器的多边形,我已经实现了下面的代码绘制多边形使用自定义视图 public class CustomView extends View { Paint paint; List<ImagesAnnotationModel> annotationModelList; public CustomView(Context context, List<ImagesAnnotationModel&g
public class CustomView extends View {
Paint paint;
List<ImagesAnnotationModel> annotationModelList;
public CustomView(Context context, List<ImagesAnnotationModel> annotationModelList) {
super(context);
this.annotationModelList = annotationModelList;
paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.RED);
paint.setStyle(Paint.Style.FILL_AND_STROKE);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
for (int i = 0; i < annotationModelList.size(); i++) {
ImagesAnnotationModel imagesAnnotationModel = annotationModelList.get(i);
try {
List<ImagesAnnotationModel.BodyJsonObject> model_data = imagesAnnotationModel.getBodyJsonObject();
Path wallpath = new Path();
wallpath.reset();
for (int j = 0; j < model_data.size(); j++) {
String xy = model_data.get(j).getXy();
String pos[] = xy.split(",");
if (j == 0) {
wallpath.moveTo(Float.parseFloat(pos[0]), Float.parseFloat(pos[1]));
} else {
wallpath.lineTo(Float.parseFloat(pos[0]), Float.parseFloat(pos[1]));
}
}
paint.setFlags(i);
canvas.drawPath(wallpath, paint);
// canvas.drawCircle(x, y, 10, paint);
} catch (Exception e) {
e.printStackTrace();
}
}
}
public boolean onTouchEvent(MotionEvent event) {
Log.i("postion","f==>"+event.getFlags());
return false;
}
}
公共类CustomView扩展了视图{
油漆;
列表注释模型列表;
公共自定义视图(上下文上下文、列表注释模型列表){
超级(上下文);
this.annotationModelList=annotationModelList;
油漆=新油漆(油漆.防油漆别名标志);
油漆。设置颜色(颜色。红色);
绘制.设置样式(绘制.样式.填充和笔划);
}
@凌驾
受保护的void onDraw(画布){
super.onDraw(帆布);
对于(int i=0;i”+event.getFlags());
返回false;
}
}
我已将此自定义视图添加到相对布局中,并使用lineTo()绘制线条并相互连接,以便最终在画布上绘制自定义对象。因此,基本上,当用户触摸视图时,以及当用户在视图的其他位置移动停止触摸时,您需要正确绘制线条?Hello@Ashvin,不需要单击对象绘制的侦听器使用line to,如果两个对象绘制,则使用forloop,然后需要单击两个对象的侦听器。