在画布上绘制圆圈,使它们在不同设备上相等或至少具有可比较的尺寸

时间:2014-12-18 05:25:35

标签: android canvas drawing scaling screen-resolution

我有一个应用程序,目前需要在surfaceview的画布上绘制一些圆圈。

一切正常,但我不知道如何在不同设备上正确缩放圆圈。

我的意思是,在我的Galaxy S4上,圆圈的大小合适。

当我在我妻子的Galaxy S3上加载相同的应用程序时,相比之下圈子很大。

我确信这是由于屏幕分辨率和密度造成的,但我正在努力解决如何将屏幕分辨率/密度考虑在内,以根据手机尺寸正确缩放圆圈。

如何在我的应用中绘制圆圈的示例。 crcl.radius目前是100的固定大小。我知道这100个需要根据设备进行缩放,但我无法绕过公式来解决这个问题。我假设转换相对简单。

免责声明:对Android有些新鲜(使用它约6个月)。

myCanvas.drawCircle(crcl.x, crcl.y, crcl.radius, selected_paint);

提前感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:2)

您可以使用dp值而不是像素。我认为这应该可以解决问题。

myCanvas.drawCircle(crcl.x, crcl.y,  dipToPixels(getApplicationContext(),crcl.radius), selected_paint);

此函数将dp转换为像素。

public static float dipToPixels(Context context, float dipValue) {
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dipValue, metrics);
}