我必须在地图视图上放置标记并在标记上写一个数字。我已经这样做了,但是文本对齐方式在不同的分辨率下会有所不同。下面是参考代码
float xVal = (float) curScreenCoords.x; // Point curScreenCoords
float yVal = (float) curScreenCoords.y-20; // Point curScreenCoords
Bitmap bitmap = BitmapFactory.decodeResource ( context.getResources() , ( R.drawable.pin_number ) ) ;
canvas.drawBitmap(bitmap, xVal, yVal, getInnerPaint());
public Paint getInnerPaint() {
if (innerPaint == null) {
innerPaint = new Paint();
}
innerPaint.setARGB(255, 117, 161, 220); // blue
innerPaint.setAntiAlias(true);
innerPaint.setStyle(Style.FILL);
return innerPaint;
}
canvas.drawText(String.valueOf(10), xVal+20, yVal+22, getCountPaint()); // 10 is just for example, it can vary to one digit to two to three
public Paint getCountPaint() {
if (innerPaint == null) {
innerPaint = new Paint();
}
innerPaint.setARGB(255, 255, 255, 255);
innerPaint.setAntiAlias(true);
innerPaint.setStyle(Style.FILL);
innerPaint.setTextSize(12f);
innerPaint.setTextAlign(Align.CENTER);
return innerPaint;
}
一切正常,除了文本对齐,此代码适用于 480*800 分辨率。文本在画布中完全居中对齐。x, y 位置在图像上是完美的,但在 320*480 上看起来并不完美。在此分辨率下,文本的 x 和 y 位置看起来不同。谁能建议我到底发生了什么错误?在不同尺寸的设备上做同样的事情有什么基本原理吗?提前致谢。