1

我似乎无法在不同分辨率的屏幕上将文本定位在相同的位置。问题是文本是浮动的,它不是任何布局类型控件的一部分。

我尝试将文本放置在与屏幕尺寸相比的相对单位中。例如,我在 X 轴上设置为 50%,在 Y 轴上设置为 67.89%。尽管如此,文本出现在不同分辨率屏幕上的不同位置。

所以我被困在某些分辨率的近似位置上,这很快就会变得一团糟。

尽管 DPI / 屏幕尺寸不同,如何在画布上确定一个相同位置的位置?

4

2 回答 2

4

使用DisplayMetrics计算距离。例如,如果您总是希望文本距左侧和顶部 1.5 英寸。

这将适用于您绘制的任何视图或位图。

draw(Canvas canvas){
    Matrix identity = new Matrix; // Used to have canvas draw on
    Matrix savedMatrix = new Matrix();
    canvas.getMatrix(savedMatrix);
    canvas.setMatrix(identity);

    float y = displayMetrics.ydpi * 1.5;
    float x = displayMetrics.xdpi * 1.5;

    canvas.drawText(text, x, y + paint.getTextSize(), paint);
    canvas.setMatrix(savedMatrix);
}
于 2011-08-28T01:39:01.710 回答
2

DisplayMetrics 类中提供了有关整体显示密度(以及其他指标)的信息。您可以像这样检索它:

void getMetrics(Context context) {
    DisplayMetrics metrics = context.getResources().getDisplayMetrics();
}

http://developer.android.com/reference/android/util/DisplayMetrics.html

您可以缩放所有坐标以考虑屏幕密度,如下所示:

void scaleForDensity(DisplayMetrics metrics, Point point) {
    point.x = (int)(point.x*metrics.density + .5f);
    point.y = (int)(point.y*metrics.density + .5f);
}
于 2011-08-28T01:58:54.143 回答