速读原著-Android应用开发入门教程(文本的对齐方式)

本文主要是介绍速读原著-Android应用开发入门教程(文本的对齐方式),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

9.3 文本的对齐方式

在 Android 中文本的绘制可以使用一些效果,其中比较智能的方面是可以让文本的对齐操作。对齐操作不仅有水平和竖直上的对齐问题,甚至可以让文本在曲线的路径上实现对齐。
参考示例程序:ApiDemo 的 TextAlign(ApiDemo=>Graphics=>TextAlign)
源代码:android/apis/graphics/TextAlign.java
TextAlign 程序的运行结果如图所示:
在这里插入图片描述

    private static class SampleView extends View {private Paint mPaint;private float mX;private float[] mPos;private Path mPath;private Paint mPathPaint;private static final int DY = 30;private static final String TEXT_L = "Left";private static final String TEXT_C = "Center";private static final String TEXT_R = "Right";private static final String POSTEXT = "Positioned";private static final String TEXTONPATH = "Along a path";private static void makePath(Path p) {p.moveTo(10, 0);p.cubicTo(100, -50, 200, 50, 300, 0);}private float[] buildTextPositions(String text, float y, Paint paint) {// 省略,计算位置信息等内容return pos;}public SampleView(Context context) {super(context);setFocusable(true);mPaint = new Paint();mPaint.setAntiAlias(true);mPaint.setTextSize(30);mPaint.setTypeface(Typeface.SERIF);mPos = buildTextPositions(POSTEXT, 0, mPaint);mPath = new Path();makePath(mPath); // 建立路径mPathPaint = new Paint();mPathPaint.setAntiAlias(true);mPathPaint.setColor(0x800000FF);mPathPaint.setStyle(Paint.Style.STROKE);}@Override protected void onDraw(Canvas canvas) {canvas.drawColor(Color.WHITE);Paint p = mPaint; // 获得画笔float x = mX;float y = 0;float[] pos = mPos;// 绘制正常的字串p.setColor(0x80FF0000); // 绘制一条线canvas.drawLine(x, y, x, y+DY*3, p);p.setColor(Color.BLACK);canvas.translate(0, DY);p.setTextAlign(Paint.Align.LEFT); // 绘制左对齐的文本canvas.drawText(TEXT_L, x, y, p);canvas.translate(0, DY);p.setTextAlign(Paint.Align.CENTER); // 绘制中对齐的文本canvas.drawText(TEXT_C, x, y, p);canvas.translate(0, DY);p.setTextAlign(Paint.Align.RIGHT); // 绘制右对齐的文本canvas.drawText(TEXT_R, x, y, p);// 绘制根据位置的的字串canvas.translate(100, DY*2);p.setColor(0xBB00FF00);for (int i = 0; i < pos.length/2; i++) {canvas.drawLine(pos[i*2+0], pos[i*2+1]-DY,pos[i*2+0], pos[i*2+1]+DY*2, p);} // 绘制若干条线p.setColor(Color.BLACK);p.setTextAlign(Paint.Align.LEFT);canvas.drawPosText(POSTEXT, pos, p); // 绘制左对齐的文本canvas.translate(0, DY);p.setTextAlign(Paint.Align.CENTER);canvas.drawPosText(POSTEXT, pos, p); // 绘制中对齐的文本canvas.translate(0, DY);p.setTextAlign(Paint.Align.RIGHT);canvas.drawPosText(POSTEXT, pos, p); // 绘制右对齐的文本// 绘制在路径上的的字串canvas.translate(-100, DY*2); // 重定画布的位置canvas.drawPath(mPath, mPathPaint);p.setTextAlign(Paint.Align.LEFT);canvas.drawTextOnPath(TEXTONPATH, mPath, 0, 0, p); // 绘制对齐路径的文本canvas.translate(0, DY*1.5f);canvas.drawPath(mPath, mPathPaint);p.setTextAlign(Paint.Align.CENTER);canvas.drawTextOnPath(TEXTONPATH, mPath, 0, 0, p); // 绘制对齐路径的文本canvas.translate(0, DY*1.5f);canvas.drawPath(mPath, mPathPaint);p.setTextAlign(Paint.Align.RIGHT);canvas.drawTextOnPath(TEXTONPATH, mPath, 0, 0, p); // 绘制对齐路径的文本}// 省略部分内容}

文本的对其操作主要通过以下两点来完成:
1.通过画笔(Paint)的 setTextAlign()函数设置绘制过程中的对齐方式。
2.drawText()drawPosText()drawTextOnPath()几个函数表示了文本的几种绘制方式。drawText()在指定的坐标上进行文本绘制;drawPosText()在一个表示为位置信息的数组上进行文本绘制(其中的 float[] pos 参数表示交替的 x 和 y 表示的坐标);drawTextOnPath()表示在一个路径(Path)进行文本绘制。

这篇关于速读原著-Android应用开发入门教程(文本的对齐方式)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/504716

相关文章

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

C++中零拷贝的多种实现方式

《C++中零拷贝的多种实现方式》本文主要介绍了C++中零拷贝的实现示例,旨在在减少数据在内存中的不必要复制,从而提高程序性能、降低内存使用并减少CPU消耗,零拷贝技术通过多种方式实现,下面就来了解一下... 目录一、C++中零拷贝技术的核心概念二、std::string_view 简介三、std::stri

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

python判断文件是否存在常用的几种方式

《python判断文件是否存在常用的几种方式》在Python中我们在读写文件之前,首先要做的事情就是判断文件是否存在,否则很容易发生错误的情况,:本文主要介绍python判断文件是否存在常用的几种... 目录1. 使用 os.path.exists()2. 使用 os.path.isfile()3. 使用

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.