我正在制作基于多点触控的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
}
答案 0 :(得分:1)
如果“相同距离”表示相同的物理距离,那么这是因为您的设备具有不同的屏幕densities。您需要将距离(目前给出的是像素)转换为与密度无关的单位。
您可以使用此方法:
static float pxToDp(Context context, float px) {
return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, px, context.getResources().getDisplayMetrics());
}
它应该为不同的屏幕返回相同的DP值。