2012-04-13 140 views
0

我知道这里有很多关于这个话题的信息,但我仍然有点困惑。我制作了一个适用于Android应用程序的类视图,该图片适用于位图和文本。查看多屏幕支持

我这样定义的文本位置:

canvas.drawText("SCORE: " + score, (canvas.getWidth() - 150), 
        (canvas.getHeight() - 20), paintScore); 

每例子,但我知道这是不是最好的做这件事的方式,因为它看起来就像我想我的手机上,但在一个与一个更小或更大的屏幕看起来很糟糕,或者只是在屏幕之外。

我应该怎么做?

回答

0

更好地选择你的宽度的东西相对位置画布的大小 - 所以找出你想要的文字到b您的手机上 - 例如,如果你想让它开始在中心:

int x = canvas.getWidth()/2 

如果这些相对类型度量不能很好地工作,作为最后的手段,android会指定一种特殊类型的资源(@dimen),您可以在各种值文件夹中定义(例如values-small/dimen.xmlvalues-xlarge/dimen.xml)和硬代码整数值在那里。 (如图所示在docs),然后检索您可以像任何其他资源:

getResources().getDimensionPixelOffset(R.dimen.score_margin) 
+0

我尽可能地使用诸如“canvas.getWidht/2”之类的东西,但在某些情况下它不起作用好吧......我认为你的第二个提法有点复杂,但我仍然会尝试。谢谢。 – Kevin04PT 2012-04-13 17:50:42

+0

我试图使用@dimen资源,它工作得很好。谢谢你的提示。 ;) – Kevin04PT 2012-04-15 11:37:29

0

你有很多的解决方案:

这里:

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