查看多屏幕支持
问题描述:
我知道这里有很多关于这个话题的信息,但我仍然有点困惑。我制作了一个适用于Android应用程序的类视图,该图片适用于位图和文本。查看多屏幕支持
我这样定义的文本位置:
canvas.drawText("SCORE: " + score, (canvas.getWidth() - 150),
(canvas.getHeight() - 20), paintScore);
每例子,但我知道这是不是最好的做这件事的方式,因为它看起来就像我想我的手机上,但在一个与一个更小或更大的屏幕看起来很糟糕,或者只是在屏幕之外。
我应该怎么做?
答
更好地选择你的宽度的东西相对位置画布的大小 - 所以找出你想要的文字到b您的手机上 - 例如,如果你想让它开始在中心:
int x = canvas.getWidth()/2
如果这些相对类型度量不能很好地工作,作为最后的手段,android会指定一种特殊类型的资源(@dimen),您可以在各种值文件夹中定义(例如values-small/dimen.xml
或values-xlarge/dimen.xml
)和硬代码整数值在那里。 (如图所示在docs),然后检索您可以像任何其他资源:
getResources().getDimensionPixelOffset(R.dimen.score_margin)
答
你有很多的解决方案:
这里:
1)与密度无关的像素(DIP)工作是一种方法,从PX转换沾:
public static int pxToDip(Activity activity, int size){
Resources r = activity.getResources();
int dipSize = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, size, r.getDisplayMetrics());
return dipSize;
}
2)个工作:
获取屏幕大小,将其与您想要的文本大小进行比较并以百分比形式添加您的保证金
+0
哼,谢谢,要试试这个。我也开放给其他消费者,因为对于游戏开发来说,获取图形很重要。 :/ – Kevin04PT 2012-04-13 17:48:13
我尽可能地使用诸如“canvas.getWidht/2”之类的东西,但在某些情况下它不起作用好吧......我认为你的第二个提法有点复杂,但我仍然会尝试。谢谢。 – Kevin04PT 2012-04-13 17:50:42
我试图使用@dimen资源,它工作得很好。谢谢你的提示。 ;) – Kevin04PT 2012-04-15 11:37:29