0

我有一些 AVD 表示分辨率(480x854)和(480x800)略有不同。当我使用方法来获取 Canvas 的大小 (getWidth()/getHeight()) 时,它们会正确报告它相应地为 480x854。

问题是,如果我运行图像下方的代码,则图像不在屏幕上:

SweepGradient sweepGrad = new SweepGradient(350, 350, 
new int[] { Color.RED, Color.YELLOW, Color.GREEN, Color.BLUE, Color.MAGENTA }, null);
circlePaint.setShader(sweepGrad);
canvas.drawCircle(350, 350, 50, circlePaint);

最后一行中的 350、350、50 值表示:x 坐标、y 坐标和圆的半径。还发现半径为 50 的圆完全可见的最大“x”值为 270(这意味着画布 x 尺寸以某种方式为 320)。

4

1 回答 1

0

恐怕我问错了问题。我在具有相同分辨率的真实设备上测试了该应用程序,但它也是错误的。

为此添加了一行:

<supports-screens android:anyDensity="true"/> 

在你的AndroidManifest.xml.

最后的问题是。为什么需要这条线?在我的情况下,画布中的 1 个像素似乎等于真实设备的 1.5 个像素。另外我认为这不是问题的正确解决方案,因为添加指定的行会产生巨大的后果(如果我的应用程序并不真正支持任何密度并且我仍然希望将一些图像放在精确的坐标处怎么办?)。

这是答案:http: //developer.android.com/guide/practices/screens_support.html#DensityConsiderations

于 2012-09-11T15:47:25.037 回答