Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.icon);// 只读,不能直接在bmp上画
System.out.println("bmp.isMutable()=== " + bmp.isMutable());
imageView1.setImageBitmap(bmp); Bitmap newb = bmp.copy(Config.ARGB_8888, true);
System.out.println("newb.isMutable()=== " + newb.isMutable());
Canvas canvasTemp = new Canvas(newb);
canvasTemp.drawColor(Color.TRANSPARENT);
Paint p = new Paint(); String familyName = "楷体";
Typeface font = Typeface.createFromAsset(getAssets(), "COUR.TTF");
p.setColor(Color.RED); p.setTypeface(font);
p.setTextSize(22); canvasTemp.drawText("写字。。。", 0, 50, p);
// canvasTemp.drawBitmap(bmp, 50, 50, p);// 画图
imageView2.setImageBitmap(newb); 自动换行的一个很好的处理函数
public String[] StringFormat(String text, int maxWidth, int fontSize) {
String[] result = null;
Vector<String> tempR = new Vector<String>();
int lines = 0;
int len = text.length();
int index0 = 0;
int index1 = 0;
boolean wrap;
while (true) {
int widthes = 0;
wrap = false;
for (index0 = index1; index1 < len; index1++) {
if (text.charAt(index1) == '\n') {
index1++;
wrap = true;
break;
}
widthes = fontSize + widthes;
if (widthes > maxWidth) {
break;
}
}
lines++;
if (wrap) {
tempR.addElement(text.substring(index0, index1 - 1));
} else {
tempR.addElement(text.substring(index0, index1));
}
if (index1 >= len) {
break;
}
}
result = new String[lines];
tempR.copyInto(result);
return result;
}
本文详细介绍了如何在Android应用中通过Bitmap、Canvas、Paint和Typeface等组件来实现自定义字体的文本绘制,并展示了如何对文本进行换行处理,确保在不同屏幕尺寸下都能获得良好的显示效果。
1069

被折叠的 条评论
为什么被折叠?



