位置: 编程技术 - 正文
推荐整理分享Android-Canvas.drawText()详解,希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!
Android的canvas上可以画很多基本形状,诸如:圆,矩形,线条等等,其中当属文字即drawText()较难理解和使用(额,这只是就个人感受),下面将慢慢介绍下如何简单使用drawText()。
FontMetricsFontMetrics是Paint的一个内部类,主要定义了Paint绘图时的一些关键坐标位置,具体如下图(1)所示:
图(1):
其中:
ascent:该距离是从所绘字符的baseline之上至该字符所绘制的最高点。这个距离是系统推荐。descent:该距离是从所绘字符的baseline之下至该字符所绘制的最低点。这个距离是系统推荐的。top:该距离是从所绘字符的baseline之上至可绘制区域的最高点。bottom:该距离是从所绘字符的baseline之下至可绘制区域的最低点。leading:为文本的线之间添加额外的空间,这是官方文档直译,debug时发现一般都为0.0,该也是系统推荐的。特别注意: ascent和top都是负,而descent和bottom:都是正。
drawText()参数理解好一个函数所需参数的具体含义,是用好一个函数的关键。canvas.drawText(String text, float x, float y, Paint paint)中有四个参数,这四个参数都是表示其相对于所在View中的坐标,和屏幕坐标无关。其中text和paint较容易理解,下面重点介绍x和y的具体含义。
float x:根据官方API上的解释,该参数表示text被画的起始x坐标。其实text被画的起始位置还与Paint有关,Paint的TextAlign属性决定了text相对于起始坐标x的相对位置。例如,TextAlign的默认属性为Paint.Align.LEFT,这是text就是从起始坐标x的右侧开始画起。
图(2):图(3):
float y: 根据官方API上的解释,该参数表示text被画的起始y坐标。这个解释是比较抽象的,其实起始y坐标所代表是text的baseline在Y轴方向的位置。
drawText()居中显示推导前提:Paint的TextAlign属性为Paint.Align.LEFT,即为默认属性。
然后根据上面的参数介绍,drawText()的水平起始坐标x很容易确定。
float x = getWidht() >> 1 - paint.measureText(String text) >> 1
注意: <<:左移运算符,num << 1,相当于num乘以2 、 >>:右移运算符,num >> 1,相当于num除以2
比较棘手的是drawText()的垂直起始坐标y,即baseline到底怎么确定。其实我们可以由上图(1)中各基准线间的相对位置关系推算出来。
假设我们所求的baseline的为baseY;
text的bottom距离:①bottomY = baseY fontMetrics.bottom;text的字体高度:②fontHeight = fontMetrics.descent- fontMetrics.ascent因为我们要让text垂直居中,所以此时text的bottom距离应该为:
注意:height可以称作控件高度③bottomY=1/2 * height 1/2 * fontHeight
所以由上述①②③公式就可以推得:④baseY = 1/2 * height 1/2 * (fontMetrics.descent- fontMetrics.ascent) - fontmetrics.bottom此时求得baseline的,即cavans.drawText()里的y的坐标。
推论:任意位置其实由上述公式④可知,在paint的size属性不变情况下,只有height是变量,所以控制好height的就可以把drawText()画在View的任意的位置作者:XycZero查看原文:飞机票
Android实现数据存储技术 Android实现数据存储技术本文介绍Android中的5种数据存储方式。数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,
androidのNDK生成so文件 我们在安装环境的时候安装了NDK,可以在eclipse下直接生成so文件。NDK的压缩包里面自带了一些sample工程,NDK的文件直接解压到某个目录下即可。第一次
Android深入浅出系列之实例应用—如何在一个Activity里调用另外一个Activity? 在手机页面之间的跳转一文中我介绍了如何运用setContentView()方法切换布局文件Layout的方式进行手机页面间的跳转,这种适合更改背景,文字颜色,文字
标签: Android-Canvas.drawText()详解
本文链接地址:https://www.jiuchutong.com/biancheng/382281.html 转载请保留说明!上一篇:[置顶] Android Studio -添加你见过的最牛Log*神器*([置顶]游戏名 TentacleLocker)
友情链接: 武汉网站建设