Canvas 作为绘制文本时,使用FontMetrics对象,计算位置的坐标。
它的思路和java.awt.FontMetrics的基本相同。
FontMetrics对象
它以四个基本坐标为基准,分别为:
・FontMetrics.top
・FontMetrics.ascent
・FontMetrics.descent
・FontMetrics.bottom
该图片将如下
Paint textPaint = new Paint( Paint.ANTI_ALIAS_FLAG);
textPaint.setTextSize( 35);
textPaint.setColor( Color.WHITE);
// FontMetrics对象
FontMetrics fontMetrics = textPaint.getFontMetrics();
String text = "abcdefghijklmnopqrstu";
// 计算每一个坐标
float baseX = 0;
float baseY = 100;
float topY = baseY + fontMetrics.top;
float ascentY = baseY + fontMetrics.ascent;
float descentY = baseY + fontMetrics.descent;
float bottomY = baseY + fontMetrics.bottom;
// 绘制文本
canvas.drawText( text, baseX, baseY, textPaint);
// BaseLine描画
Paint baseLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);>
baseLinePaint.setColor( Color.RED);
canvas.drawLine(0, baseY, getWidth(), baseY, baseLinePaint);
// Base描画
canvas.drawCircle( baseX, baseY, 5, baseLinePaint);
// TopLine描画
Paint topLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);
topLinePaint.setColor( Color.LTGRAY);
canvas.drawLine(0, topY, getWidth(), topY, topLinePaint);
// AscentLine描画
Paint ascentLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);
ascentLinePaint.setColor( Color.GREEN);
canvas.drawLine(0, ascentY, getWidth(), ascentY, ascentLinePaint);
// DescentLine描画
Paint descentLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);
descentLinePaint.setColor( Color.YELLOW);
canvas.drawLine(0, descentY, getWidth(), descentY, descentLinePaint);
// ButtomLine描画
Paint bottomLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);
bottomLinePaint.setColor( Color.MAGENTA);
canvas.drawLine(0, bottomY, getWidth(), bottomY, bottomLinePaint);
推荐:
android之显示Log
androd之绘制文本(FontMetrics)
android之获取信息终端
iWidsets 发布1.8.1版本(20090920)
java多线程设计wait/notify机制 (synchronized与对象锁)
android下的创建和读取资源文件
- 大小: 5.2 KB
分享到:
- 2009-09-22 18:29
- 浏览 9533
- 评论(1)
- 论坛回复 / 浏览 (1 / 10305)
- 查看更多
相关推荐
本文实例讲述了Android编程之绘制文本(FontMetrics)实现方法。分享给大家供大家参考,具体如下: Canvas 作为绘制文本时,使用FontMetrics对象,计算位置的坐标。 它的思路和java.awt.FontMetrics的基本相同。 ...
4. **绘制文本**: 在自定义View的`onDraw()`方法中,使用`Canvas.drawText()`函数绘制文本,同时应用之前计算的位置信息。 5. **验证效果**: 运行应用程序并查看文本的显示效果,确保文本在View中的布局正确无误。 6...
`FontMetrics Viewer`是一个实用工具,它可以帮助开发者深入了解Android字体的尺寸和特性,以便更好地控制文本的显示效果。本项目主要涉及以下几个Android代码相关的知识点: 1. **自定义View**: `FontMetrics ...
3. **绘制文本**:在`onDraw()`方法中,使用`canvas.drawText()`方法来绘制文本。传入计算好的坐标和要显示的文本,即可实现居中效果。 ```java @Override protected void onDraw(Canvas canvas) { super.onDraw...
在Android开发中,当涉及到在Canvas上绘制文本时,精确地定位文本的位置是至关重要的。`FontMetrics`对象就是这样一个工具,它提供了有关字体在特定大小下各部分位置的信息,帮助开发者准确计算文本的坐标。本文将...
在Android开发中,当涉及到文字绘制时,了解`FontMetrics`是非常重要的。`FontMetrics`对象提供了关于字体在屏幕上如何布局的关键信息。本文将详细解析`FontMetrics`的几个核心属性,帮助开发者更好地理解和运用它们...
在Android开发中,有时我们需要对字体的宽高进行精确的控制,例如在自定义View或者绘制文本时。本文将详细讲解如何在Android中获取字体的宽度和高度。 首先,我们来理解一下Android中的字体概念。在Android系统中,...
首先,我们要了解Android中用于绘制文本的基本组件:Canvas、Paint以及它们如何相互作用。Canvas提供了在屏幕上绘制图形和文本的接口,而Paint则是定义这些元素样式的关键,包括字体大小、颜色、样式等。 1. **测量...
在Android开发中,当涉及到自定义视图或者图形绘制时,文字的精准定位变得尤为重要。本文主要探讨的是Android中的文字基线(Baseline)算法及其在实际应用中的使用方法。 首先,Baseline是绘制文字时的一个关键概念...
Paint.FontMetrics fm = getPaint().getFontMetrics(); return Math.abs(fm.bottom - fm.top); } ``` 8. 最后,在XML布局文件中使用自定义的Ticker控件: ```xml android:id="@+id/ticker_view" android:...
`drawText()`方法是Canvas的一个关键函数,用于在指定位置绘制文本。本篇文章将深入探讨如何利用`drawText()`实现文字居中效果。 首先,`drawText(String text, float x, float y, Paint paint)`方法的参数含义如下...
自定义View的核心是重写`onDraw()`方法,其中使用`Canvas`对象的`drawText()`方法绘制文本。同时,借助Handler来定时刷新界面,改变文字绘制的X轴位置,从而模拟出滚动效果。 以下是实现跑马灯效果的关键步骤: 1....
最后,使用mTextPaint在圆心位置绘制进度文本。 此外,我们需要添加一个`setProgress(int progress)`方法,以便在运行时改变进度条的值。此方法会更新mProgress变量,并调用`invalidate()`来重新绘制视图,从而实时...
在Android开发中,Canvas是用于在屏幕上绘制图形和文本的核心...理解`FontMetrics`类的属性和`drawText()`的用法,是自定义View时绘制文本的关键。通过实践和实验,开发者可以熟练掌握这些技巧,创造出丰富的用户界面。
// 调整并绘制文本 private void drawScaledText(Canvas canvas, int lineStart, String line, float lineWidth) { // 实现文字的两端对齐算法,这里需要计算每个空格的宽度,然后按比例分配 // ... } } ``` ...
在绘制文字时,需要了解 FontMetrics 类,这个类是 Paint的一个内部类,主要定义了绘制文本时的一些关键坐标位置。FontMetrics 类有五个成员变量:top、ascent、baseline、descent、bottom 和 leading。这些变量的值...
在Android开发中,有时我们需要将文字转换为图片,这样的需求可能出现在生成个性化海报、动态分享图或者信息可视化等场景。本文将详细介绍如何在Android平台上实现这个功能,通过一个示例代码来阐述整个过程。 首先...