自动换行StaticLayout的简单介绍
来源:互联网 发布:淘宝怎样退货流程 编辑:程序博客网 时间:2024/05/20 16:43
赠人玫瑰,手留余香,,,
昨天的项目中做到了一个生成图片打印的功能,其中用到了一个StaticLayout 这么一个Layout,在此记录下,希望能稍微对需要的小伙伴们有点帮助。 StaticLayout是一个 可以实现 自动换行的Layout,看别人说的,TextView的自动换行也是通过StaticLayout来实现的(只是看别人这么写,我并不知道)。然后如果我们可以在自定义view中通过这个Layout来实现自动换行,虽然简单,但是实用性大大的有! StaticLayout的功能在其构造方法中体现的淋漓尽致,大家看下面代码的注释就懂了
StaticLayout( CharSequence source, //需要分行的字符串 int bufstart, //分行的字符串从第几的位置开始 int bufend, //分行的字符串从第几的位置结束 TextPaint paint, int outerwidth, //宽度,字符串超出宽度时自动换行 Alignment align, //有ALIGN_CENTER, ALIGN_NORMAL, ALIGN_OPPOSITE 三种 float spacingmult, //相对行间距,相对字体大小,1.5f表示行间距为1.5倍的字体高度 float spacingadd,. //在基础行距上添加多少实际行间距等于这两者的和。 boolean includepad, TextUtils.TruncateAt ellipsize, //从什么位置开始省略 int ellipsizedWidth //超过多少开始省略需要指出的是这layout是默认画在Canvas的(0,0)点的,如果需要调整位置只能在draw前移Canvas的起始坐标canvas.translate(x,y);
以上是StaticLayoutd 构造方法的介绍,抄过来的,感谢
http://blog.csdn.net/kongbaidepao/article/details/48247217
下面介绍我在项目中是使用吧,
/** * @param context * @return */ static public Boolean printBill(Activity context) { try { int height = 50 + 14 * 30; // 打印高度计算:每多一行加50 Bitmap bitmap = Bitmap .createBitmap(WIDTH, height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); canvas.drawColor(Color.WHITE); TextPaint paint = new TextPaint(Paint.ANTI_ALIAS_FLAG); paint.setStrokeWidth(1); paint.setColor(Color.BLACK); paint.setTypeface(Typeface.SANS_SERIF); String content = ""; StaticLayout layout; // 打印标题--购物小票 paint.setTextSize(32); content = "备注信息"; layout = new StaticLayout(content, paint, (int) (400), Layout.Alignment.ALIGN_CENTER, 1F, 0, false); canvas.translate(0, 0); layout.draw(canvas); // 分割线 content = "======================\r\n"; layout = new StaticLayout(content, paint, (int) (400), Layout.Alignment.ALIGN_NORMAL, 1F, 0, false); canvas.translate(0, 50); layout.draw(canvas); // 打印客户姓名 content = "客户姓名: " + customerName + "\r\n"; layout = new StaticLayout(content, paint, (int) (400), Layout.Alignment.ALIGN_NORMAL, 1F, 0, false); canvas.translate(0, 50); layout.draw(canvas); // 打印门店名称 content = "门店名称: " + orgName + "\r\n"; layout = new StaticLayout(content, paint, (int) (400), Layout.Alignment.ALIGN_NORMAL, 1F, 0, false); canvas.translate(0, 50); layout.draw(canvas); // 打印款项 content = "款项类型: " + type + "\r\n"; layout = new StaticLayout(content, paint, (int) (400), Layout.Alignment.ALIGN_NORMAL, 1F, 0, false); canvas.translate(0, 50); layout.draw(canvas); // 打印ERP单号 content = "ERP单号: " + erpCode + "\r\n"; layout = new StaticLayout(content, paint, (int) (400), Layout.Alignment.ALIGN_NORMAL, 1F, 0, false); canvas.translate(0, 50); layout.draw(canvas); // 打印HY单号 content = "HY单号: " + jtlOrderNo + "\r\n"; layout = new StaticLayout(content, paint, (int) (400), Layout.Alignment.ALIGN_NORMAL, 1F, 0, false); canvas.translate(0, 50); layout.draw(canvas); canvas.save(Canvas.ALL_SAVE_FLAG); canvas.restore(); String path = Environment.getExternalStorageDirectory() + "/image.png"; System.out.println(path); FileOutputStream os = new FileOutputStream(new File(path)); bitmap.compress(Bitmap.CompressFormat.PNG, 100, os); os.flush(); os.close(); AppHelper.callPrint(context, path); return true; } catch (Exception e) { e.printStackTrace(); return false; } }
就这么简单,我也想多说点,可是再说下去说啥呢。我也很绝望啊,可我能怎么办,,,
0 0
- 自动换行StaticLayout的简单介绍
- Android使用StaticLayout实现文本绘制自动换行
- 文字换行StaticLayout
- android TextView不会自动换行怎么办,教你使用staticlayout解决换行
- StaticLayout的使用
- StaticLayout
- StaticLayout
- StaticLayout
- UILabel 简单实现自动换行
- QTableView中文本根据内容自动换行的简单方法
- 表格的自动换行
- 自动换行的工具
- 自动换行的class
- 自动换行的css
- 自动换行的ViewGroup
- view 的自动换行
- 自动换行的RadioGroup
- 自动换行的button
- android中常见的设计模式有哪些?
- Oracle行转列
- BZOJ 2229 [Zjoi2011] 最小割
- asp.net core mvc剖析:KestrelServer
- 工作随笔---WiFi开发(1)---WIFIBroadcastReceiver类
- 自动换行StaticLayout的简单介绍
- iOS开发上传App Store时候一直卡在 Authenticating with the iTunes Store 的解决办法
- EventBus的导入
- iOS 线程同步与锁
- Jquery mobile动态加载渲染失效
- 『 论文阅读』Understanding deep learning requires rethinking generalization
- python使用matplotlib绘制k线图
- EFcore与动态模型
- 视频播放中经常会用到截取第一帧图片来当做默认背景图的功能