Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public Bitmap drawMultilineTextOnBitmap(Context context, int resId, String text) {
- // prepare canvas
- Resources resources = context.getResources();
- float scale = resources.getDisplayMetrics().density;
- Bitmap bitmap = BitmapFactory.decodeResource(resources, resId);
- android.graphics.Bitmap.Config bitmapConfig = bitmap.getConfig();
- // set default bitmap config if none
- if(bitmapConfig == null) {
- bitmapConfig = android.graphics.Bitmap.Config.ARGB_8888;
- }
- // resource bitmaps are immutable, so we need to convert it to mutable one
- bitmap = bitmap.copy(bitmapConfig, true);
- Canvas canvas = new Canvas(bitmap);
- // new antialiased Paint
- TextPaint paint=new TextPaint(Paint.ANTI_ALIAS_FLAG);
- // text color - #3D3D3D
- paint.setColor(Color.rgb(61, 61, 61));
- // text size in pixels
- paint.setTextSize((int) (14 * scale));
- // text shadow
- paint.setShadowLayer(1f, 0f, 1f, Color.WHITE);
- // set text width to canvas width minus 16dp padding
- int textWidth = canvas.getWidth() - (int) (16 * scale);
- // init StaticLayout for text
- StaticLayout textLayout = new StaticLayout(text, paint, textWidth, Layout.Alignment.ALIGN_CENTER, 1.0f, 0.0f, false);
- // get height of multiline text
- int textHeight = textLayout.getHeight();
- // get position of text's top left corner
- float x = (bitmap.getWidth() - textWidth)/2;
- float y = (bitmap.getHeight() - textHeight)/2;
- // draw text to the Canvas center
- canvas.save();
- canvas.translate(x, y);
- textLayout.draw(canvas);
- canvas.restore();
- return bitmap;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement