我有一些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 coord,y coord和圆的半径。 还发现,半径为50的圆的最大'x'值是完全可见的270(意味着画布x尺寸为320)。
答案 0 :(得分:0)
我害怕我提出了错误的问题。 我在具有相同分辨率的真实设备上测试了该应用程序,但它也是错误的。
这样做的灵魂就是增加一条线:
<supports-screens android:anyDensity="true"/>
在AndroidManifest.xml
。
最后一个问题是。为什么需要这条线?似乎在我的情况下,画布中的1个像素将等于真实设备的1.5个像素。 另外我认为这不是问题的正确解决方案,因为添加指定的行会产生巨大的后果(如果我的应用程序不支持任何密度并且我仍然希望将某些图像放在确切的坐标处怎么办?)。
以下是答案: http://developer.android.com/guide/practices/screens_support.html#DensityConsiderations