Angle不支持汉字的显示,内带的AngleFont,对E文的支持是没问题。AngleFont通过把字符变为Bitmap的方式来加载字库,准备纹理。对于汉字字库,这个过程会耗时很长,全部加载进来,占用内存也很多;如果部分加载、根据使用频度更新字库缓存,算法又太麻烦。
我使用的是笨方法,先使用Android的Canvas,把汉字绘制到内存图片,然后根据图片生成一个AngleSprite(含配套的AngleSpriteLayout及AngleSpriteLayout关联的Texture)。下面是转换汉字为Bitmap的类,支持单行文本绘制,可以根据需要做省略处理。
public final class StringToBitmap {
public static Bitmap getBitmapFromSingleLineString(String text, int textColor, int backgroundColor, String fontType,
int fontSize, int bitmapWidth, int bitmapHeight, Paint.Align align) {
Bitmap bitmap = Bitmap.createBitmap(bitmapWidth, bitmapHeight,
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
// 背景颜色
canvas.drawColor(backgroundColor);
TextPaint paint = new TextPaint();
Typeface typeface = Typeface.create(fontType, Typeface.NORMAL);
// 消除锯齿
paint.setAnti