2

我有一个路径数组列表,我需要将其从一部手机发送到另一部手机,以便第二部手机可以绘制第一部手机的用户绘制的图片。现在我有一个功能,能够从一部手机向另一部手机发送字符串消息。如何转换字符串中的路径,然后获取所有必要的数据以在另一部手机上重新创建它?

4

1 回答 1

3

我将 DrawEntities 的数组列表(要绘制的对象)作为 gson 发送,然后对其进行处理:

 ArrayList<DrawEntity> pathsToDraw = paintv.getPaths();
                Gson gson = new Gson();
                String json = gson.toJson(pathsToDraw);

现在要获取路径,在我的绘图视图中,我在每个 MOVE 运动事件中保存路径坐标的 X 和 Y:

  private void touch_move(float x, float y) {
    LogService.log(TAG, "touchmove" + y);
    xlist.add(x);
    ylist.add(y);
    float dx, dy;
    dx = Math.abs(x - mX);
    dy = Math.abs(y - mY);
    if ((dx >= 20) || (dy >= 20)) {
        hasmoved = true;
    }
    if (mPath == null) {
        mPath = new Path();
        mPath.moveTo(x, y);
    }
    if ((dx >= TOUCH_TOLERANCE) || (dy >= TOUCH_TOLERANCE)) {
        mPath.quadTo(mX, mY, (x + mX) / 2, (y + mY) / 2);
        mX = x;
        mY = y;
    }
    LogService.log(TAG, "touchmove" + ylist.size());
}

 private void touch_up() {
    LogService.log(TAG, "touch up");
    mPath.lineTo(mX, mY);
    mPath.moveTo(mX, mY);
    DrawEntity draw = new DrawEntity(mPath, paint, stroke, xlist, ylist);
    draw.color = paint.getColor();
    if (hasmoved) {
        pathsToDraw.add(draw);
    }
    LogService.log(TAG, "touch up SIZE: " + pathsToDraw.size());
    xlist = null;
    ylist = null;
}

如您所见,然后我在构造函数中创建了包含这两个列表 (x, y) 的 DrawEntity(我将发送它)。

于 2013-09-24T09:19:32.567 回答