Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使用自定义视图在画布上使用单击侦听器绘制多边形?_Android_Canvas_Onclicklistener_Android Custom View - Fatal编程技术网

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,然后需要单击两个对象的侦听器。