【问题标题】:How can i make a dynamically created Bitmap to fit an ImageView?如何制作动态创建的位图以适合 ImageView?
【发布时间】:2016-05-02 20:43:34
【问题描述】:

我想从具有给定文本大小的String 创建一个Bitmap,并将其设置为ImageView 的来源。

其布局 xml 中的 ImageView

<ImageView
    android:id="@+id/myImageView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:scaleType="fitXY"/>

Bitmap设置为ImageView的src:

myImageView.setImageBitmap(getBitmapFromString("StringToDraw", 30));

我的getBitmapFromString 方法:

private Bitmap getBitmapFromString(String string, float textSize) {
    Bitmap bitmap = Bitmap.createBitmap(200, 200, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    Paint paint = new Paint();

    paint.setAntiAlias(true);
    paint.setSubpixelText(true);
    paint.setStyle(Paint.Style.FILL);
    paint.setColor(Color.WHITE);
    paint.setTextSize(textSize);
    paint.setTextAlign(Paint.Align.LEFT);

    canvas.drawText(string, 0, 100, paint);

    return bitmap;
}

如何计算位图的正确大小(从给定的文本大小和String 长度)以及如何使其正确适合 ImageView?

【问题讨论】:

    标签: java android android-imageview android-bitmap


    【解决方案1】:

    在以下类似问题的答案中找到了解决方案: https://stackoverflow.com/a/15252876/3363481

    我的代码现在看起来像这样:

    private Bitmap getBitmapFromString(String text, float fontSizeSP, Context context) {
        int fontSizePX = convertDiptoPix(context, fontSizeSP);
        int pad = (fontSizePX / 9);
        Paint paint = new Paint();
    
        paint.setAntiAlias(true);
        paint.setColor(Color.WHITE);
        paint.setTextSize(fontSizePX);
    
        int textWidth = (int) (paint.measureText(text) + pad * 2);
        int height = (int) (fontSizePX / 0.75);
        Bitmap bitmap = Bitmap.createBitmap(textWidth, height, Bitmap.Config.ARGB_4444);
        Canvas canvas = new Canvas(bitmap);
        float xOriginal = pad;
        canvas.drawText(text, xOriginal, fontSizePX, paint);
    
        return bitmap;
    }
    

    【讨论】:

      猜你喜欢
      • 2014-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多