码迷,mamicode.com
首页 > 移动开发 > 详细

android staticlayout文字绘制

时间:2018-09-05 17:41:04      阅读:658      评论:0      收藏:0      [点我收藏+]

标签:字体   restore   过程   static   int   raw   size   imp   宽度   

  • StaticLayout。这个也是使用 Canvas 来进行文字的绘制,不过并不是使用 Canvas 的方法。

    Canvas.drawText() 只能绘制单行的文字,而不能换行。它:

    不能在 View 的边缘自动折行
  • taticLayout 的构造方法是 StaticLayout(CharSequence source, TextPaint paint, int width, Layout.Alignment align, float spacingmult, float spacingadd, boolean includepad),其中参数里:

    width 是文字区域的宽度,文字到达这个宽度后就会自动换行;
    align 是文字的对齐方向;
    spacingmult 是行间距的倍数,通常情况下填 1 就好;
    spacingadd 是行间距的额外增加值,通常情况下填 0 就好;
    includeadd 是指是否在文字上下添加额外的空间,来避免某些过高的字符的绘制出现越界。

    如果你需要进行多行文字的绘制,并且对文字的排列和样式没有太复杂的花式要求,那么使用 StaticLayout 就好。
  •  TextPaint textPaint =new TextPaint();
            textPaint.setTextSize(40);
            //是否使用伪粗体 之所以叫伪粗体( fake bold ),因为它并不是通过选用更高 weight 的字体让文字变粗,而是通过程序在运行时把文字给「描粗」了。
            textPaint.setFakeBoldText(true);
            //是否加下划线
            textPaint.setUnderlineText(true);
            //是否加删除线
            textPaint.setStrikeThruText(true);
            String text = "Lorem Ipsum is simply dummy text of the printing and typesetting industry.";
            StaticLayout staticLayout = new StaticLayout(text,textPaint,600, Layout.Alignment.ALIGN_NORMAL,
                    1,0,true);
            String text2 = "a\nbc\ndefghi\njklm\nnopqrst\nuvwx\nyz";
            StaticLayout staticLayout2 = new StaticLayout(text2, textPaint, 600,
                    Layout.Alignment.ALIGN_NORMAL, 1, 0, true);
            canvas.save();
            canvas.translate(50,100);
    
            staticLayout.draw(canvas);
            canvas.translate(0,200);
            staticLayout2.draw(canvas);
            canvas.restore();
    

      

android staticlayout文字绘制

标签:字体   restore   过程   static   int   raw   size   imp   宽度   

原文地址:https://www.cnblogs.com/endian11/p/9592166.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!