zoukankan      html  css  js  c++  java
  • drawText文字绘制知识

    drawText(String text, float x, float y, Paint paint)

    x,y是基于文字基本线的,而不是android坐标系的左上角。

    使用staticLayout进行文字换行,它既可以为文字设置宽度上限来让文字自动换行,也会在   处主动换行

    例子:

    String text1 = "Lorem Ipsum is simply dummy text of the printing and typesetting industry.";  
    StaticLayout staticLayout1 = new StaticLayout(text1, paint, 600,  
            Layout.Alignment.ALIGN_NORMAL, 1, 0, true);
    String text2 = "a
    bc
    defghi
    jklm
    nopqrst
    uvwx
    yz";  
    StaticLayout staticLayout2 = new StaticLayout(text2, paint, 600,  
            Layout.Alignment.ALIGN_NORMAL, 1, 0, true);
    
    ...
    
    canvas.save();  
    canvas.translate(50, 100);  
    staticLayout1.draw(canvas);  
    canvas.translate(0, 200);  
    staticLayout2.draw(canvas);  
    canvas.restore(); 

    效果:

    StaticLayout 的构造方法是 StaticLayout(CharSequence source, TextPaint paint, int width, Layout.Alignment align, float spacingmult, float spacingadd, boolean includepad),其中参数里:

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

    如果你需要进行多行文字的绘制,并且对文字的排列和样式没有太复杂的花式要求,那么使用 StaticLayout 就好。

    Paint对文字绘制的辅助

    setTypeface(Typeface typeface)  设置字体样式

    setFakeBoldText(boolean fakeBoldText) 设置伪粗体

    setStrikeThruText(boolean strikeThruText) 是否加删除线

    setUnderlineText(boolean underlineText) 是否加下划线

    setTextSkewX(float skewX) 字体倾斜对应的角度

    setLetterSpacing(float letterSpacing) 设置字符间距,默认是0

     setTextAlign(Paint.Align align) 设置文字对齐方式,左对齐,右对齐,中间对齐等

    setTextLocale(Locale locale) 设置字体的语言区域,繁体中文,简体中文等

  • 相关阅读:
    基于jquery的提示框JavaScript 插件,类Bootstrap
    css重点知识和bug解决方法
    小白初识js
    动态的将数据生成“表格”(京东商品),并具备搜索筛选工能
    原装js轮播图,鼠标移入停止轮播,移出继续轮播
    用js写九九乘法表格,附带背景颜色
    用js写直角三角形,等腰三角形,菱形
    关于两数组,求出两数组中相同的的对象
    好的js书写习惯
    前端之道
  • 原文地址:https://www.cnblogs.com/krislight1105/p/10005902.html
Copyright © 2011-2022 走看看