Не уверен, что это сработает для вас, но в этих ситуациях мне действительно нравится просто создавать представление, макетировать его, а затем записывать его «снимок экрана» в растровое изображение.
Эта функциясоздать растровое изображение из параметров + макет XML в "just_a_textview".
private static Bitmap renderTextIntoBitmap(Context context, Bitmap.Config bitmapConfig, String text, int textColor, int maxTextWidth) {
LayoutInflater inflater = LayoutInflater.from(context);
TextView tv = (TextView) inflater.inflate(R.layout.just_a_textview, null);
tv.setText(text);
tv.setMaxWidth(maxTextWidth);
int widthSpec = View.MeasureSpec.makeMeasureSpec(maxTextWidth, View.MeasureSpec.EXACTLY);
int heightSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
tv.measure(widthSpec, heightSpec);
tv.layout(0, 0, tv.getMeasuredWidth(), tv.getMeasuredHeight());
tv.setTextColor(textColor);
Bitmap bitmap = Bitmap.createBitmap(tv.getWidth(), tv.getHeight(), bitmapConfig);
Canvas canvas = new Canvas(bitmap);
tv.draw(canvas);
return bitmap;
}
Вы не хотите делать это в каждом кадре, но если у вас есть растровое изображение, его рисование на холсте происходит очень быстро.И это дает вам всю гибкость ЛЮБОГО вида Android.
Я понимаю, что это не сработает, если ваш текст очень динамичный, но вы можете сделать это так и использовать матрицу холста для любого масштабирования/ вращение, которое вы можете захотеть сделать.Это может быть дополнительно оптимизировано для повышения производительности, например, путем извлечения инфляции макета.