我有一个应用程序,目前需要在surfaceview的画布上绘制一些圆圈。
一切正常,但我不知道如何在不同设备上正确缩放圆圈。
我的意思是,在我的Galaxy S4上,圆圈的大小合适。
当我在我妻子的Galaxy S3上加载相同的应用程序时,相比之下圈子很大。
我确信这是由于屏幕分辨率和密度造成的,但我正在努力解决如何将屏幕分辨率/密度考虑在内,以根据手机尺寸正确缩放圆圈。
如何在我的应用中绘制圆圈的示例。 crcl.radius目前是100的固定大小。我知道这100个需要根据设备进行缩放,但我无法绕过公式来解决这个问题。我假设转换相对简单。
免责声明:对Android有些新鲜(使用它约6个月)。
myCanvas.drawCircle(crcl.x, crcl.y, crcl.radius, selected_paint);
提前感谢您提供任何帮助。
答案 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);
}