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