前提:界面xy已经变化
测试1:
float y =0;
float x = 0;
@Override
public boolean onTouch(View v, MotionEvent event) {
y+=1;
x+=1;
}
手机端:鼠标点击的坐标是左上角横屏的X,Y值
然而:到了电脑PC端,也是左上角X,Y值
测试2:
float y =0;
float x = 0;
@Override
public boolean onTouch(View v, MotionEvent event) {
y+=2;
x+=1;
}
手机端:鼠标点击的坐标是左上角横屏的X,Y值
然而:到了电脑PC端,也是左上角X,Y值,横的是X,竖的是Y
测试3:
扫描二维码关注公众号,回复:
4881680 查看本文章
float y =0;
float x = 0;
@Override
public boolean onTouch(View v, MotionEvent event) {
x = event.getX();
y = event.getY();
}
分别点手机屏幕四个角落:
x=691.0402,y=40.933647 左上角
x=695.03467,y=1124.0874 左下角
x=39.944523,y=71.90945 右上角
坐标应该就=手机像素
然而我们要先转换成电脑位置就得这么改:
要对XY坐标进行镜像处理,将手机左角落的坐标原点转换成电脑的左角落原点,就需要转成手机的右角落原点
//横屏x
float phoneX = event.getX();
//横屏y
float phoneY = event.getY();
//高度
// mScreenHeight;
//长度
// mScreenWidth;
cur_x = phoneX;
cur_y = phoneY;
float y = v.getWidth() - phoneX;
float x = phoneY;
//get dst video size and zoom
double scaleWidth = dstWidth * 1.0 / v.getHeight();
double scaleHeight = dstHeight * 1.0 / v.getWidth();
if(scaleWidth>scaleHeight) {
y = (float) (scaleWidth * y);
x = (float) (scaleWidth * x);
}else{
y = (float) (scaleHeight * y);
x = (float) (scaleHeight * x);
}
完成!
需要注意的是,远程控制横屏时最上面的一行手指很难定位到,可能是手机屏幕这部分无法点击,全屏时无法控制PC电脑端的放大缩小,所以我们这个VIEW是需要MARGIN=5dp差不多就OK了