android paint设置字体 中文字体 楷体 和自动换行方法(zhuan)
16lz
2021-01-23
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; }