Android应用程序共享画布,以便多个用户可以同时绘制弧

时间:2014-03-29 14:16:16

标签: android canvas

您好我正在开发一个Android应用,其中画布在多个用户之间共享,以便他们可以同时在其上绘制弧。我的计划是使用phonegap,以便我可以使用HTML5 canvas元素。但我发现通过这种方式做起来有点困难。是否有其他(简单)方法来构建此应用程序意味着不使用phonegap。请分享一些其他替代方法。

1 个答案:

答案 0 :(得分:1)

您需要的是一种架构,您可以在所有抽屉之间共享的对象中存储每个人的笔画。

假设您有这样的对象:

public class DrawStrokes{
 private ArrayList<ArrayList<Point>> strokes;
}

然后你可以添加方法来添加笔画(ArrayList<Point>),并添加接收所有笔画的方法。

绘制笔划时,只需获取所有ArrayLists并绘制它们。

通过添加颜色等,对象可以变得更加复杂。

编辑:有关实施的更多代码。

接收触摸事件:

    public boolean onTouchEvent(MotionEvent e) {
        synchronized (drawThread.getSurfaceHolder()) {
            final int action = e.getAction();
            switch (action & MotionEvent.ACTION_MASK) {
                case MotionEvent.ACTION_DOWN: {
                    startNewArrayOfDrawingPoints();
                    break;
                }
                case MotionEvent.ACTION_MOVE: {
                    addPositionToYourArray();

                    break;
                }
                case MotionEvent.ACTION_UP: {
                    userStoppedDrawing();
                    break;
                }
                case MotionEvent.ACTION_CANCEL: {
                    userStoppedDrawing();
                    break;
                }
            }
            return true;
        }
    }

在列表中绘制所有内容

public void onDraw(Canvas canvas) {
            canvas.drawColor(Color.WHITE);
            for(int i = 0; i < allStrokes.size(); i++){
                for (int j = 0; j < allStrokes.get(i).size(); j++){
                canvas.drawCircle(allStrokes.get(i).get(j).x, 
                            allStrokes.get(i).get(j).y, 
                            radie, 
                            paint;
                }
            }
        }