Этот метод берет отрисовку из ваших ресурсов, рисует текст поверх нее и возвращает новую отрисовку. Все, что вам нужно сделать, это дать ему идентификатор ресурса вашего пузыря и текст, который вы хотите сверху. Затем вы можете передать возвращенный чертеж в любое удобное для вас место.
public BitmapDrawable writeOnDrawable(int drawableId, String text){
Bitmap bm = BitmapFactory.decodeResource(getResources(), drawableId).copy(Bitmap.Config.ARGB_8888, true);
Paint paint = new Paint();
paint.setStyle(Style.FILL);
paint.setColor(Color.BLACK);
paint.setTextSize(20);
Canvas canvas = new Canvas(bm);
canvas.drawText(text, 0, bm.getHeight()/2, paint);
return new BitmapDrawable(bm);
}
Для сохранения плотности вам нужен этот конструктор
BitmapDrawable (Resources res, Bitmap bitmap)
Таким образом, при сохранении контекста последнее возвращение должно быть примерно таким:
return new BitmapDrawable(context.getResources(), bm);
Это предотвращает нежелательный изменяемый размер.