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); innerPaint.setAntiAlias(true); innerPaint.setStyle(Style.FILL); innerPaint.setTextSize(12f); innerPaint.setTextAlign(Align.CENTER); return innerPaint; }
一切正常,除了文本对齐,此代码适用于480 * 800分辨率.文本在画布中完全居中对齐. x,y位置在图像上是完美的,但在320 * 480上看起来并不完美.文本的x和y位置在此分辨率上看起来不同.任何人都可以建议我究竟发生了什么错误?在不同尺寸的设备上做同样的事情还有什么基础吗?提前致谢.
解决方法 您的值curScreenCoords.y-20和xVal 20,yVal 22具有所有分辨率的恒定像素偏移,但它们应取决于设备的像素密度,如下所示:xOffset = (int) (13.33f * context.getResources().getdisplayMetrics().density + 0.5f);yOffset = (int) (14.67f * context.getResources().getdisplayMetrics().density + 0.5f);canvas.drawText(String.valueOf(10),xVal + xOffset,yVal + yOffset,getCountPaint());总结
以上是内存溢出为你收集整理的在图像android中画一个文本全部内容,希望文章能够帮你解决在图像android中画一个文本所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)