如何获得两个触摸坐标之间的显示独立距离?

时间:2015-08-12 20:10:10

标签: android android-layout android-canvas android-graphview

我正在制作基于多点触控的Android应用程序。在应用程序中,我找到两个触摸坐标之间的距离。两个触摸坐标之间的距离在不同的设备上是相同的,但设备显示不同的距离。

设备A显示89.0123。

设备B显示110.84940。

如何在不同的设备上获得相同的距离?

public boolean onTouchEvent(MotionEvent event)
{
 int maskedAction=event.getActionMasked();
 switch(maskedAction)
 /// some code
 ///case MotionEvent.ACTION_POINTER_DOWN;
 /// 
 PointF init_p1,init_p2;
 init_p1.x=event.getX(0);
 init_p1.y=event.getY(0);
 init_p2.x=event.getX(1);
 init_p2.y=event.getY(1);
 /////// some code
 float X_diff=init_p1.x-init_p2.x;
 float Y_diff=init_p1.y-init_p2.y;
 double xdiffsq= Math.pow(X_diff,2);
 double ydiffsq= Math.pow(Y_diff,2);
 distance=Math.sqrt(xdiffsq+ydiffsq);
 Log.d(TAG,String.valueOf(distance));
///some code
}

1 个答案:

答案 0 :(得分:1)

如果“相同距离”表示相同的物理距离,那么这是因为您的设备具有不同的屏幕densities。您需要将距离(目前给出的是像素)转换为与密度无关的单位。

您可以使用此方法:

static float pxToDp(Context context, float px) {
    return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, px, context.getResources().getDisplayMetrics());
}

它应该为不同的屏幕返回相同的DP值。