android绘制文本
来源:互联网 发布:使命召唤12优化怎么样 编辑:程序博客网 时间:2024/05/19 17:59
android中怎么在画布上绘制文本呢?大家知道anroid提供了一个方法:
public void drawText(String text, float x, float y, Paint paint) ;
这个方法中x,y不是指文本在cavas的左上角的位置,使用的时候要注意了。否则绘制出来的文本的位置和预想的不一样。
参考http://blog.csdn.net/linghu_java/article/details/46404081文中描述。
x:文本起始水平位置
y:文本的baseline位置(非左上角位置)
参考:
所有在绘制文本的时候,需要注意drawtext的x,y值。
1.如上如果设置x,y为0;此时在屏幕上展示效果就是只看个到g这个字母下面部分。
原因是y为baseline的位置,那么文本的起点就是-baseline。
2.如果要设置文本刚好显示完全:y应该为-r.top这个位置。
r.top是怎么获取的呢?通过方法getTextBonds(0,1,paint)可以获取到。
这里的Rect对象坐标并不是以左上角为准的,而是相对于左边中间靠下位置的一个点,就是图中的黄色五角。
rect的起点就是baseline的位置开始的。
canva.drawText(0,-r.top,paint);
但是此时y方向显示完全了。x方向还是未对其到0点,原因是x代表图上蓝色框的位置。
3.如果要让文本实际显示d字母对其到坐标0点,需要设置x为人,-r.left.此时从-r.left开始才是文本真正开始的位置。
canva.drawText(-r.left,-r.top,paint);
示列:将文本显示在起点为(0,0)区域高度为400的垂直居中。
TextPaint textPaint = new TextPaint(); textPaint.setAntiAlias(true); textPaint.setTextSize(FONT_SIZE); textPaint.setColor(Color.WHITE); textPaint.setTextAlign(Paint.Align.LEFT); textPaint.setStyle(Paint.Style.FILL); int xBase = 0; int yBase = 0; int ITEM_HEIGHT = 400; Rect textRect = new Rect(); textPaint.getTextBounds("测", 0, 1, textRect); canvas.drawText("测", xBase, yBase - textRect.top + (ITEM_HEIGHT - textRect.height())/2 , textPaint);
另外,还有其他方法获取文本的高度:FontMetricsInt.top – FontMetricsInt.bottom等。
- android 绘制文本居中
- android绘制文本
- android绘制文本
- Android沿路径绘制文本
- Android Canvas Paint绘制文本
- Android 绘制文本垂直居中
- android|图形图像 fontmetrics 文本绘制
- Android: 绘制的文本如何排版
- Android文本的测量和绘制
- Android文本的测量和绘制
- 【Android开发】图形图像处理技术-绘制文本
- android 里面Canvas绘制文本的方法
- Android 自定义View-怎么绘制居中文本?
- Android文本的测量和绘制
- Android 自定义View-怎么绘制居中文本?
- android 自定义view之文本绘制解析
- Android 绘制文本的一些方法
- Android之绘制文本(FontMetrics) 获取文本高度
- 点击两次退出应用程序
- 使用CURL进行模拟登录
- Android数据存储五种方式
- kerberos简介
- 怎么用xmind整理我们获取的杂乱的信息
- android绘制文本
- Mysql锁表解锁实现数据备份迁移
- React Native 动画研究与实践
- 【Java】一次SpringMVC+ Mybatis 配置多数据源经历
- Eclipse的Servers视图中无法添加Tomcat6/Tomcat7
- 提高C#编程水平的50个要点 之十三“使用静态构造函数来初始化静态成员变量”
- yii2默认路径
- 51nod 1383&1048 整数分解为2的幂 [递推]【数学】
- 空间二次曲面数据拟合算法推导及仿真分析