如何使用自定义视图在画布上通过单击侦听器绘制多边形?

问题描述

请给我任何建议或需要您的帮助来设置多边形的点击侦听器,我已经实现了以下使用自定义视图绘制多边形的代码

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;
        }

    }

我已将此自定义视图添加到相对布局中并使用 lineto() 绘制线条并相互连接,以便最终在画布上绘制自定义对象。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)