我在一个资源文件中定义的圆半径尺寸,像这样:如何在不同的Android设备上绘制相同物理尺寸的圆?
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="circleRadius">15dp</dimen>
</resources>
然后我得出这样的自定义视图圆:
Resources res = getResources();
float radius = res.getDimension(R.dimen.circleRadius);
...
canvas.drawCircle(randomX, randomY, radius, paint);
我的印象是,这个下会在任何设备上产生相同物理尺寸的圆,因为这些单位是在dp中指定的,但它不是。请参阅下面的截图。
设备1(皮肤= WVGA800,密度= 240):
设备2(皮肤= QVGA,密度= 120):
(皮肤= 1024×768,密度= 160):
对于每个设备,我打勾启动时Scale display to real size
选项,和所使用的相同的设置(屏幕尺寸= 3.7中,监视器DPI = 105)。这是我出错的地方吗?有什么我不明白的吗?
那么一个人如何得出同样的物理尺寸的圈中的任何设备上? –
屏幕**尺寸**在物理尺寸和屏幕尺寸方面有所不同。如果你试图用尺子来衡量,你永远不会得到完全一样的东西。你想要完成什么? –
我想在任何设备上绘制一个相同物理尺寸(例如1英寸半径)的圆。与[本示例]类似(http://developer.android.com/guide/practices/screens_support.html#density-independence)。 –