速读原著-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

相关文章

MySQL 分区与分库分表策略应用小结

《MySQL分区与分库分表策略应用小结》在大数据量、复杂查询和高并发的应用场景下,单一数据库往往难以满足性能和扩展性的要求,本文将详细介绍这两种策略的基本概念、实现方法及优缺点,并通过实际案例展示如... 目录mysql 分区与分库分表策略1. 数据库水平拆分的背景2. MySQL 分区策略2.1 分区概念

Android实现打开本地pdf文件的两种方式

《Android实现打开本地pdf文件的两种方式》在现代应用中,PDF格式因其跨平台、稳定性好、展示内容一致等特点,在Android平台上,如何高效地打开本地PDF文件,不仅关系到用户体验,也直接影响... 目录一、项目概述二、相关知识2.1 PDF文件基本概述2.2 android 文件访问与存储权限2.

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

Android Studio 配置国内镜像源的实现步骤

《AndroidStudio配置国内镜像源的实现步骤》本文主要介绍了AndroidStudio配置国内镜像源的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、修改 hosts,解决 SDK 下载失败的问题二、修改 gradle 地址,解决 gradle

Spring中配置ContextLoaderListener方式

《Spring中配置ContextLoaderListener方式》:本文主要介绍Spring中配置ContextLoaderListener方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录Spring中配置ContextLoaderLishttp://www.chinasem.cntene

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

AJAX请求上传下载进度监控实现方式

《AJAX请求上传下载进度监控实现方式》在日常Web开发中,AJAX(AsynchronousJavaScriptandXML)被广泛用于异步请求数据,而无需刷新整个页面,:本文主要介绍AJAX请... 目录1. 前言2. 基于XMLHttpRequest的进度监控2.1 基础版文件上传监控2.2 增强版多