我有这种方法,我在图像上绘制一些文字:
public BitmapDrawable writeOnDrawable(int drawableId, String text){
Bitmap bm = BitmapFactory.decodeResource(getResources(), drawableId);
Typeface mFace = Typeface.createFromAsset(this.getAssets(),"fonts/progbot.ttf");
Paint paint = new Paint();
paint.setStyle(Style.FILL);
paint.setColor(Color.RED);
paint.setTypeface(mFace);
paint.setTextSize(30);
Canvas canvas = new Canvas(bm);
canvas.drawText(text, 0, bm.getHeight()/2, paint);
return new BitmapDrawable(bm);
}
这就是我称之为这种方法的方式:
lineIconView.setImageDrawable(writeOnDrawable(R.drawable.icon_line_numbre, linea.getNumero()));
此ImageView(lineIconView
)已设置R.drawable.icon_line_numbre
资源。如果我不调用writeOnDrawable
函数,则图像以其原始大小显示,但在调用后,图像的大小会大大减小。
这是正常行为吗?
答案 0 :(得分:1)
原来我使用了错误的BitmapDrawable构造函数。
官方文件说明了以下事项:
BitmapDrawable(Bitmap bitmap)不推荐使用此构造函数。使用 BitmapDrawable(Resources,Bitmap)确保drawable具有 正确设定目标密度。
所以我最终使用了:
return new BitmapDrawable(bm);