我似乎无法在不同分辨率的屏幕上将文本定位在相同的位置。问题是文本是浮动的,它不是任何布局类型控件的一部分。
我尝试将文本放置在与屏幕尺寸相比的相对单位中。例如,我在 X 轴上设置为 50%,在 Y 轴上设置为 67.89%。尽管如此,文本出现在不同分辨率屏幕上的不同位置。
所以我被困在某些分辨率的近似位置上,这很快就会变得一团糟。
尽管 DPI / 屏幕尺寸不同,如何在画布上确定一个相同位置的位置?
使用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);
}
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);
}