2023年7月7日发(作者:)
android中换⾏的代码,Android中⽤StaticLayout实现⽂本绘制⾃动换⾏详解前⾔使⽤Canvas的drawText绘制⽂本是不会⾃动换⾏的,即使⼀个很长很长的字符串,drawText也只显⽰⼀⾏,超出部分被隐藏在屏幕之外。可以逐个计算每个字符的宽度,通过⼀定的算法将字符串分割成多个部分,然后分别调⽤drawText⼀部分⼀部分的显⽰, 但是这种显⽰效率会很低。StaticLayout是android中处理⽂字换⾏的⼀个⼯具类, StaticLayout 已经实现了⽂本绘制换⾏处理,下⾯是如何使⽤ StaticLayout 的例⼦:⽰例代码package dstaticlayoutdemo;import nt;import ent;import Layout;import int;import ty;import t;import ;import ;import ;import ;import ;import uteSet;import Inflater;import ;import em;import ;import oup;import ew;import ;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {te(savedInstanceState);setContentView(new MyView(this));}public class MyView extends View {Paint mPaint; //画笔,包含了画⼏何图形、⽂本等的样式和颜⾊信息public MyView(Context context) {super(context);}public MyView(Context context, AttributeSet attrs){super(context, attrs);}public void onDraw(Canvas canvas){(canvas);TextPaint tp = new TextPaint();or();le();tSize(50);String message = "paint,draw paint指⽤颜⾊画,如油画颜料、⽔彩或者⽔墨画,⽽draw 通常指⽤铅笔、钢笔或者粉笔画,后者⼀般并不涂上颜料。两动词的相应名词分别为p";StaticLayout myStaticLayout = new StaticLayout(message, tp, th(), _NORMAL, 1.0f, 0.0f,false);(canvas);e();}}}这跟TextView的效果是⼀样的,其实TextView也是调⽤ StaticLayout 来实现换⾏的。StaticLayout的构造函数有三个:public StaticLayout(CharSequence source,TextPaint paint,int width,ent align,float spacingmult,float spacingadd,boolean includepad)public StaticLayout(CharSequence source,int bufstart,int bufend,TextPaint paint,int outerwidth,ent align,float spacingmult,float spacingadd,boolean includepad)public StaticLayout(CharSequence source,int bufstart,int bufend,TextPaint paint,int outerwidth,ent align,float spacingmult,float spacingadd,boolean includepad,teAt ellipsize,int ellipsizedWidth)android StaticLayout参数解释StaticLayout(CharSequence source, int bufstart, int bufend,TextPaint paint, int outerwidth,Alignment align,float spacingmult, float spacingadd,boolean includepad,teAt ellipsize, int ellipsizedWidth)1.需要分⾏的字符串2.需要分⾏的字符串从第⼏的位置开始3.需要分⾏的字符串到哪⾥结束4.画笔对象的宽度,字符串超出宽度时⾃动换⾏。的对其⽅式,有ALIGN_CENTER, ALIGN_NORMAL, ALIGN_OPPOSITE 三种。7.相对⾏间距,相对字体⼤⼩,1.5f表⽰⾏间距为1.5倍的字体⾼度。8.在基础⾏距上添加多少实际⾏间距等于这两者的和。9.参数未知10.从什么位置开始省略11.超过多少开始省略需要指出的是这个layout是默认画在Canvas的(0,0)点的,如果需要调整位置只能在draw之前移Canvas的起始坐标ate(x,y);总结以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作能带来⼀定的帮助,如果有疑问⼤家可以留⾔交流,谢谢⼤家对脚本之家的⽀持。
发布者:admin,转转请注明出处:http://www.yc00.com/web/1688677975a161794.html
评论列表(0条)