Я не знаю, является ли это лучшим способом, и я не делал этого раньше ... но вот как я бы это сделал:
- Создание объекта
Paint
который будет описывать внешний вид текста. - Установите необходимые параметры для шрифта (
Paint.setTypeFace()
), размера (Paint.setTextSize()
), цвета и т. д. - Измерьте размер требуемогорастровое изображение, используя
Paint.getTextBounds()
и строку, которую вы хотите нарисовать. - Создайте новое растровое изображение этого размера, используя
Bitmap.createBitmap()
, убедитесь, что в нем есть альфа-компонент. - Создайте холст, используярастровое изображение, которое вы создали для рисования, используя
new Canvas(bitmap)
. - Нарисуйте текст в растровое изображение:
Canvas.drawText()
, используя созданный вами объект рисования и нужную вам строку. - Масштабируйте растровое изображение, используя
Bitmap.createScaledBitmap()
будет следующим большим размером как степень 2 в x и y.У меня есть удобная функция (округление до степени 2) для этого, если вам это нужно. - Привязка, установка параметров текстуры и загрузка растрового изображения в gl, используя
GLUtils.texImage2D()
- Нарисуйте квад/ спрайт с использованием текстуры;масштабируйте соответствующим образом, используя измеренные размеры текста.
Конечно, если вы хотите предварительно создать композицию фона кнопки / текста кнопки, вы можете вместо этого использовать холст для рисования на фоне.
Я предполагаю, что независимо от того, какие шрифты android поддерживает, Canvas.drawText () будет поддерживать использование соответствующих настроек Paint, то же самое должно относиться к строковым символам (кандзи или другим), которые вводятся в него.Это будет легко узнать, поэкспериментировав, как только вы запустите и запустите метод, описанный выше.
Надеюсь, это было несколько полезно.Ура, Аерт.