我在资源文件中定义了一个圆半径尺寸,如下所示:
<?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):
设备 3(皮肤=1024x768,密度=160):
对于每个设备,我Scale display to real size
在启动时勾选了该选项,并使用相同的设置(屏幕尺寸=3.7 英寸,显示器 dpi=105)。这是我出错的地方吗?有什么我不明白的吗?