我正在构建一款Android游戏,其中包含一张卡片作为背景。
我需要做的是在运行时(每秒或特殊事件发生时)在图像上绘制文本。
但是我需要在图像的特定位置绘制文本,让我们说:如果图像是123x245,让我们在(2,3)处绘制文本。
到目前为止我所做的是将文本写入图像(作为位图)并将新的位图分配给ImageView
,但性能非常差。
那么,为了做到这一点,你建议采用什么解决方案:CustomView
,SurfaceView
等?
谢谢。
答案 0 :(得分:0)
试试这个:
private Bitmap addTextToBitmap(Bitmap b) {
Canvas c = new Canvas(b);
Paint p = new Paint();
p.setTextSize(100); // textSize
p.setColor(getResources().getColor(android.R.color.black)); // textColor
c.drawText("Your Text", POS_X, POS_Y, p); // textPosition
b = b.copy(Bitmap.Config.RGB_565, true);
return b;
}
例如:
imageView.setImageBitmap(addTextToBitmap(imageView.getDrawable().getBitmap()));
答案 1 :(得分:0)
扩展您ImageView
并使用Canvas.drawText
中的onDraw
方法将所有图片上方的文字绘制到ImageView
。请勿忘记在drawText
之后致电super.onDraw
,否则您的文字将会在ImageView
的图像下方绘制。