2

画像の上にテキストをペイントするこの方法があります。

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、画像は元のサイズで表示されますが、呼び出した後、画像のサイズが大幅に縮小されます。

これは正常な動作ですか?

4

1 に答える 1

1

BitmapDrawable に間違ったコンストラクタを使用していたことが判明しました。

公式ドキュメントには、この問題について次のように記載されています。

BitmapDrawable(Bitmap bitmap) このコンストラクターは非推奨です。BitmapDrawable(Resources, Bitmap) を使用して、ドローアブルがターゲット密度を正しく設定していることを確認します。

だから私は最終的に使用しました:

return new BitmapDrawable(bm);
于 2012-10-21T15:16:18.593 に答える