1.前言

  本文以Canvas类的下面这个函数为基础,它用来在画布上绘制文本。

public void drawText(String text, float x, float y, Paint paint)

2.效果如图

  

3.按效果图说明

  1. 原点,图中红色圆点是最重要的,它是绘制文本时坐标系的的原点,是计算各线的基础点。
  2. 函数中的x表示到原点的水平距离,y表示到原点的垂直距离。
  3. baseline 是图中灰色的线,文字就画在它上面。它是从原点出发,水平方向画的一条线。
  4. 如果baseline的y为屏幕坐标的0,那么文字画在基线上面时,显示在屏幕外,屏幕内看不见。
  5. topline 图中绿色的线,以当前字体大小,计算出来的离基线最高的距离线。
  6. bottom line 图中蓝色的线,以当前字体大小,1行文本为基础,计算出来的离基线最低距离线。
  7. ascent line 图中青色线,以1行文本为基础,计算出来的离基线的距离上线。
  8. descent line 图中黄色线,以1行文本为基础,计算出来的离基线的距离下线。
  9. 关于 paint.setTextAlign(xxx);
  • Align.CENTER 表示把文字的水平中间位置放在原点上。
  • Align.RIGHT 表示文字在原点的右侧。
  • Align.LEFT 表示文字在原点的左侧。(默认)

 

自定义View(3)关于canas.drawText的更多相关文章

  1. Android 自定义View及其在布局文件中的使用示例

    前言: 尽管Android已经为我们提供了一套丰富的控件,如:Button,ImageView,TextView,EditText等众多控件,但是,有时候在项目开发过程中,还是需要开发者自定义一些需要 ...

  2. Android自定义View初步

    经过上一篇的介绍,大家对于自定义View一定有了一定的认识,接下来我们就以实现一个图片下显示文字的自定义View来练习一下.废话不多说,下面进入我们的正题,首先看一下我们的思路,1.我们需要通过在va ...

  3. Android之自定义View的实现

    对于学习Android开发的小童鞋对于自定义View一定不会陌生,相信大家对它是又爱又恨,爱它可以跟随我们的心意设计出漂亮的效果:恨它想要完全流畅掌握,需要一定的功夫.对于初学者来说确实很不容易,网上 ...

  4. [转]Android自定义控件三部曲系列完全解析(动画, 绘图, 自定义View)

    来源:http://blog.csdn.net/harvic880925/article/details/50995268 一.自定义控件三部曲之动画篇 1.<自定义控件三部曲之动画篇(一)—— ...

  5. Android自定义View 画弧形,文字,并增加动画效果

    一个简单的Android自定义View的demo,画弧形,文字,开启一个多线程更新ui界面,在子线程更新ui是不允许的,但是View提供了方法,让我们来了解下吧. 1.封装一个抽象的View类   B ...

  6. Android 自定义 view(四)—— onMeasure 方法理解

    前言: 前面我们已经学过<Android 自定义 view(三)-- onDraw 方法理解>,那么接下我们还需要继续去理解自定义view里面的onMeasure 方法 推荐文章: htt ...

  7. Android 自定义view(二) —— attr 使用

    前言: attr 在前一篇文章<Android 自定义view -- attr理解>已经简单的进行了介绍和创建,那么这篇文章就来一步步说说attr的简单使用吧 自定义view简单实现步骤 ...

  8. Android自定义View的三种实现方式

    在毕设项目中多处用到自定义控件,一直打算总结一下自定义控件的实现方式,今天就来总结一下吧.在此之前学习了郭霖大神博客上面关于自定义View的几篇博文,感觉受益良多,本文中就参考了其中的一些内容. 总结 ...

  9. Android自定义View之倒计时Countdown实现

    先看一下效果: 在点击OK键之后,开始倒计时. 实现步骤 1.新建Android工程"CountdownView" 2.自定义Drawable 自定义View并没有直接的用户交互, ...

随机推荐

  1. iOS 系统二维码扫描(可限制扫描区域)

    使用 AVFoundation系统库来进行二维码扫描并且限制扫描二维码的范围.(因为默认的是全屏扫描) -(void)beginCode { //1.摄像头设备 AVCaptureDevice *de ...

  2. error:LNK2005 已经在*.obj中定义

    为什么会出现这个错误??“error LNK2005: 已经在*.obj中定义”  编程中经常能遇到LNK2005错误——重复定义错误,其实LNK2005错误并不是一个很难解决的错误,弄清楚它形成的原 ...

  3. PHP读取xml之cdata讲解

    实例: xss.xml <?xml version="1.0" encoding="UTF-8"?><filters>    <f ...

  4. 中国移动MM Android/OPhone付费SDK--MMBillingSDK,集成问题总结

    原地址:http://www.j2megame.com/html/xwzx/ty/2916.html 中国移动MM Android/OPhone付费SDK--MMBillingSDK,集成问题总结 近 ...

  5. Ubuntu 下使用Remmina Remote Desktop client 连接windows server输入法的问题

    Ubuntu 自带的Remmina Remote  Desktop 用来连接windows,vnc,ssh等非常方便好用,   但我在连接windows 2008 r2 server时遇到一个问题: ...

  6. 在mac上安装hadoop伪分布式

    换了macbook pro之后,要重新安装hadoop,但是mac上的jdk跟windows上的不同,导致折腾了挺久的,现在分享出来,希望对大家有用. 一:下载jdk 选择最新版本下载,地址:http ...

  7. lintcode:Fibonacci 斐波纳契数列

    题目: 斐波纳契数列 查找斐波纳契数列中第 N 个数. 所谓的斐波纳契数列是指: 前2个数是 0 和 1 . 第 i 个数是第 i-1 个数和第i-2 个数的和. 斐波纳契数列的前10个数字是: 0, ...

  8. JAVA XMLConfiguration解决StringXML及多节点

    import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configurat ...

  9. 怎样加快master数据库的写操作?分表原则!将表水平划分!或者添加写数据库的集群

    1.怎样加快master数据库的写操作?分表原则!将表水平划分!减少表的锁定时间!!! 或者或者添加写数据库的集群!!!或者添加写数据库的集群!!! 2.既然分表了,就一定要注意分表的规则!要在代码层 ...

  10. iOS使用Charts框架绘制—柱形图

    首先看一下最终要实现的效果: 最终效果 一.初始化barChartView 绘制柱形图需要用到BarChartView这个类,下面是初始化代码: self.barChartView = [[BarCh ...