Android - 将触摸坐标发送到另一台设备

时间:2017-05-15 14:15:36

标签: java android

我想在我的设备中绘制一些东西,并且油漆将在另一台设备上绘制。

为此,我编写了一个服务器,它接受onTouchEvent的坐标并将它们发送到另一个设备:

public boolean onTouchEvent(MotionEvent event) {
    float touchX = event.getX();
    float touchY = event.getY();

    client.sendMessage(touchX+this.getLeft() + " " + touchY+this.getTop() + " " + event.getAction());
    return true;
}

但是,因为屏幕的大小不同,所以油漆不是相对的。

我该怎么办?

tnx抱歉我的英语不好。

解决方案:

这是新代码:

public boolean onTouchEvent(MotionEvent event) {
    float touchX = event.getX();
    float touchY = event.getY();
    DisplayMetrics displayMetrics = new DisplayMetrics();
    ((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
    int height = displayMetrics.heightPixels;
    int width = displayMetrics.widthPixels;

    client.sendMessage((touchX)/width + " " + (touchY)/height + " " + event.getAction());
    return true;
}

不要忘记在其他设备中繁殖。

1 个答案:

答案 0 :(得分:1)

要使其相对,您必须将坐标除以屏幕高度/宽度。

float touchX = event.getX();
float touchY = event.getY();

float relX = touchX / screenWidth;
float relY = touchY / screenHeight;

然后在另一台设备上,你需要乘以屏幕尺寸

float corX = relX * screenWidth;
float corY = relY * screenHeight;