Bitmap.decodeResource调整图像大小

时间:2012-10-19 13:36:40

标签: java android bitmap

我有这种方法,我在图像上绘制一些文字:

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函数,则图像以其原始大小显示,但在调用后,图像的大小会大大减小。

这是正常行为吗?

1 个答案:

答案 0 :(得分:1)

原来我使用了错误的BitmapDrawable构造函数。

官方文件说明了以下事项:

  

BitmapDrawable(Bitmap bitmap)不推荐使用此构造函数。使用   BitmapDrawable(Resources,Bitmap)确保drawable具有   正确设定目标密度。

所以我最终使用了:

return new BitmapDrawable(bm);