Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.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
Java 在android中绘制多条路径_Java_Android_Android Canvas - Fatal编程技术网

Java 在android中绘制多条路径

Java 在android中绘制多条路径,java,android,android-canvas,Java,Android,Android Canvas,我使用手指移动在android画布中绘制闭合路径。这是我的代码 switch (event.getAction()) { case MotionEvent.ACTION_DOWN: startPoint = new PointF(event.getX(), event.getY()); endPoint = new PointF();

我使用手指移动在android画布中绘制闭合路径。这是我的代码

switch (event.getAction())
            {
                case MotionEvent.ACTION_DOWN:
                    startPoint = new PointF(event.getX(), event.getY());
                    endPoint = new PointF();
                    hotSpot = new HotSpots();
                    endPoint.x = event.getX();
                    endPoint.y = event.getY();
                    wallpath = new Path();
                    wallpath.moveTo(endPoint.x,endPoint.y);
                    break;
                case MotionEvent.ACTION_MOVE:
                    PointF point = new PointF(event.getX(),event.getY());
                    endPoint.x = event.getX();
                    endPoint.y = event.getY();
                invalidate();
                    break;
                case MotionEvent.ACTION_UP:

                    endPoint.x = startPoint.x;//event.getX();
                     isFinished = true;                    
                    break;
                default:
                    break;
            }

    @Override
    protected void onDraw(Canvas canvas)
    {
        wallpath.lineTo(endPoint.x, endPoint.y);
            canvas.drawPath(wallpath, paint);

       if(isFinished)
        {
            wallpath.lineTo(endPoint.x, endPoint.y);
            canvas.drawPath(wallpath, paint);
        }
    }

在每一次新的接触中,我都在创造一条新的道路。但当绘制新路径时,旧路径将被擦除。如何在画布上为每个路径绘制具有不同填充颜色的多个路径。

当触发的事件是ACTION\u DOWN时,您将使用wallpath=new path()语句重置wallpath,放弃以前的值。这个新路径是在onDraw方法中绘制的唯一对象,每次需要重新绘制画布时都会调用它

考虑构建一个路径列表,当ACTION_DOWN是触发事件时,向列表中添加一个新路径,并在onDraw方法中绘制列表中的每个路径

详情:

在代码的其他地方,添加:

pathList = new ArrayList<Path>;
删除条件,这是不必要的

wallpath = new Path();
pathList.add(wallpath); // <-- Add this line.
endPoint.x = event.getX();
endPoint.y = event.getY();
wallpath.lineTo(endPoint.x, endPoint.y); // <-- Add this line.
for (Path path : pathList) {
    canvas.drawPath(path, paint);
}