0

我知道有很多关于这个话题的信息,但我还是有点困惑。我为一个适用于位图和文本的 android 应用程序制作了一个类视图。

我这样定义文本位置:

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

举个例子,但我知道这不是最好的方法,因为它看起来就像我在手机上想要的那样,但在一个更小或更大的屏幕上,它看起来很糟糕,或者只是在屏幕外。

我应该怎么做?

4

2 回答 2

0

最好选择您的宽度以相对于画布的大小来定位事物 - 所以找出您希望文本在手机上 b 的位置 - 例如,如果您希望它从中心开始:

int x = canvas.getWidth()/2

如果这些相对类型测量结果不理想,作为最后的手段,android 会指定一种特殊类型的资源 (@dimen),您可以在各种值文件夹(例如values-small/dimen.xmlor values-xlarge/dimen.xml)中定义它并在那里硬编码整数值。(如文档中所见),然后像检索任何其他资源一样检索它们:

getResources().getDimensionPixelOffset(R.dimen.score_margin)
于 2012-04-13T17:35:10.470 回答
0

你有很多解决方案:

1) 使用与密度无关的像素 (dip):

这是一种从 px 转换为 dip 的方法:

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)使用百分比:

获取屏幕大小,将其与所需的文本大小进行比较,并以百分比添加边距

于 2012-04-13T17:43:52.370 回答