自动换行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
原创粉丝点击