android - 如何将 android.graphics.Path 作为字符串或 Json 发送到另一部手机?

标签 android graphics path paint send

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

最佳答案

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

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

现在为了获取路径,在我的绘画 View 中,我在每个 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;
}

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

关于android - 如何将 android.graphics.Path 作为字符串或 Json 发送到另一部手机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18954866/

相关文章:

linux - Linux 图形堆栈是如何组织的?

python - 如何在GAE中获取应用程序根路径

linux - 有没有办法让 Windows 像 Linux 那样返回目录的路径?

java - 应用程序关闭时广播接收器不工作

android - 打包位置与平面位置 android 可扩展 ListView 之间的区别

r - 向ggplot添加水平线

在 Linux 上绘制 Golang OpenGL 线,但在 Windows10 上不绘制

android - 如何指定 FCM 消息的优先级?

android - packageDebug > 无法在 Android Studio 上封装 APK

macos - 为什么 iosnoop(磁盘上的 IO 监听文件)返回带有问号的路径?