比较基础的一个方法。即绘制文本

使用如下:

Paint paint = new Paint();   paint.setColor(Color.RED);   // 红色字体
paint.setStyle(Paint.Style.FILL); // 类型
paint.setStrokeWidth(1);       // 画笔线条宽度
paint.setTextSize(60);         // 绘制文本大小
// 绘制内容
canvas.drawText("听着music睡 ' blogs" , 100 , 200 , paint);

效果;

可以看下方法:

这篇只讨论第三个方法。

 可以看到 4个参数,第二个、第三个参数 是float类型,实际上就是 绘制的文本的绘制参考坐标。注意这个坐标 不是文本的左上角的那个点,float y 代表 基线的Y位置。

验证一下:

绘制一条蓝色的基线,绘制一个文本。

        Paint paint = new Paint();paint.setColor(Color.RED);paint.setStyle(Paint.Style.FILL);paint.setStrokeWidth(1);paint.setTextSize(60);int baseLine = 100 ;// 基线的Y坐标canvas.drawText("abcdefghi",30 , baseLine , paint);  // 绘制 (30,baseLine) 为参考点的文本
        paint.setColor(Color.BLUE);canvas.drawLine(30,baseLine ,300,baseLine,paint); // 绘制基线

可以看到,绘制文本的参数(floatx , floaty) 指的是基线的左起点坐标而不是左上角。

扩展:

drawtext除了基线还有另外4条线,称为4格线。

分别是ascent,descent,top,bottom

  • ascent: 系统建议的,绘制单个字符时,字符应当的最高高度所在线
  • descent:系统建议的,绘制单个字符时,字符应当的最低高度所在线
  • top: 可绘制的最高高度所在线
  • bottom: 可绘制的最低高度所在线

怎么获取这4个线的y轴坐标呢,有一个类 FontMetrics

这些属性的值即 与基线的相对y轴距离(可能为负值)

示例:

        int baseLineY = 100 ;Paint.FontMetrics fm = paint.getFontMetrics();float ascent = baseLineY + fm.ascent ; // 制顶线float descent = baseLineY+fm.descent ; //制低线float top = baseLineY + fm.top ; // 最顶线float bottom = baseLineY + fm.bottom ; // 最低限// 基线
        paint.setColor(Color.RED);canvas.drawLine(baseLineX , baseLineY , 1000 , baseLineY , paint);// 制顶线
        paint.setColor(Color.BLUE);canvas.drawLine(baseLineX,ascent , 1000 , ascent , paint);// 制底线
        paint.setColor(Color.GREEN);canvas.drawLine(baseLineX,descent , 1000 , descent , paint);// 最顶线
        paint.setColor(Color.YELLOW);canvas.drawLine(baseLineX,top,1000,top  , paint);// 最底线
        paint.setColor(Color.MAGENTA);canvas.drawLine(baseLineX  , bottom  , 1000 , bottom ,paint);//写文字
        paint.setColor(Color.BLACK);canvas.drawText("听着music睡 ' blogs" ,baseLineX,baseLineY , paint);

可以看到:

黄色的最顶线top

蓝色的制顶线ascent

红色的基线baseline

绿色的制低线descent

粉色的最低限bottom

自定义控件详解(七):drawText()相关推荐

  1. SSH服务详解(七)– SSH 连接 Github

    SSH 连接 Github SSH服务详解(一)–Linux SSH 服务器与客户端的安装与启动 SSH服务详解(二)–使用私钥登录 SSH 服务器(免密登录) SSH 服务详解 (三)-- 使用 S ...

  2. PackageManagerService启动详解(七)之扫描系统应用安装目录阶段流程分析

    PKMS启动详解(七)之BOOT_PROGRESS_PMS_SYSTEM_SCAN_START阶段流程分析 Android PackageManagerService系列博客目录: PKMS启动详解系 ...

  3. Linux字符设备驱动详解七(“插件“设备树实现RGB灯驱动)

    文章目录 系列文章目录 前言 正文 Device Tree Overlays:"插件"设备树 传统设备树 "插件"设备树 使用前提 案例说明 设备树:foo.d ...

  4. Android 动态分区详解(七) overlayfs 与 adb remount 操作

    0. 导读 最开始学习 Android 动态分区源码的时候,比较代码发现 system/core/fs_mgr 目录下多了一个名为 fs_mgr_overlayfs.cpp 的文件,一直不知道什么时候 ...

  5. OpenLayers官方示例详解七之图层的最小、最大分辨率(Layer Min/Max Resolution)

    目录 一.示例简介 二.代码详解 一.示例简介 这个示例加载了一个MapBox的瓦片图层和一个Open Street Map的瓦片图层,同时使用最小.最大分辨率限制图层加载的比例级别. 使用鼠标放大两 ...

  6. 自定义控件详解(六):Paint 画笔MaskFilter过滤

    首先看一个API:setMaskFilter(MaskFilter maskfilter): 设置MaskFilter,可以用不同的MaskFilter实现滤镜的效果,如滤化,立体等. 以下有两个Ma ...

  7. Android空间架构与自定义控件详解-更新中

    概述: 控件是每个Adnroid APP都必不可少的一部分,无论是使用系统控件还是使用自定义控件.这些控件组成了精美的界面. 本章将讲解Android控件架构,以及如何实现自定义控件. 本章你讲了解到 ...

  8. Java单例模式详解--七种单例模式实现+单例安全+实际应用场景

    单例模式 保证了一个类只有一个实例,并且提供了一个全局访问点.单例模式的主要作用是节省公共资源,方便控制,避免多个实例造成的问题. 实现单例模式的三点: 私有构造函数 私有静态变量维护对象实例 公有静 ...

  9. 青牛融合cdn_详解七牛云存储以及融合CDN加速

    对于网站上的资源,比如图片,音视频,以及CSS.JS等静态文件可以使用融合CDN加速,提高页面访问速度与资源加载速度. 同样是对网站做加速,但根据需求一般分为两种情况: 情景一:同时使用七牛云的加速服 ...

  10. HashMap 详解七

    使用 Iterator 遍历 通过 HashMap.entrySet().iterator() 方法获取迭代器, 使用 next 方法对 HashMap 进行遍历. HashMap<String ...

最新文章

  1. deepin更新失败_检查更新失败
  2. iphone分辨率_iPhone 的屏幕为什么比安卓更丝滑?
  3. hdu3986 spfa + 枚举最短路上的边
  4. python怎么画两幅图_python matplotlib模块: Subplots(在同一个figure里绘制多个图)
  5. 《精通Unreal游戏引擎》一第4步 使用BSP创建地图
  6. 争议“云游戏”:一个几十亿规模的颠覆者?一场徐虎飘渺的幻梦
  7. 性能测试监控关键指标
  8. Hadoop(五)HBase基础
  9. 公司组织框架以及人员信息同步到钉钉相关解决方案
  10. matlab 常用机器学习算法的实现
  11. NLP学习—12.Seq2Seq模型与Attention机制
  12. OpenCV3.4.1+VS2018 安装并配置详细教程
  13. SAM-BA 2.14 reconfiguration----DIY你的sam-ba
  14. 苹果公司市值$5000亿已经超越波兰、台湾等国民生产总值GDP
  15. 零基础学习微信小程序(7):组件
  16. rabbitmq 与 erlang 安装与测试
  17. .NET 反编译工具
  18. 查看exe和dll等二进制文件时间戳(生成时间)的工具与方法介绍
  19. 匈牙利命名法(指导)
  20. 茂林位置服务器,合肥北斗gps卫星定位系统-量身定制「茂林GPS运营中心」

热门文章

  1. 在Struts2中实现登陆后跳转到登录前页面
  2. 1日元是多少人民币(2014年04月23日)
  3. wow和scrollreveal动画
  4. 走遍中国《中国古镇全集》
  5. vue自学入门-2(vue创建项目)
  6. clickhouse安装使用文档
  7. opensuse 安装 Anaconda3 之后出现Could not start d-bus. Can you call qdbus?
  8. Linux下安装与使用本地的perl模块
  9. Object.prototype.toString方法
  10. CSS中背景图片的坐标之使用说明及css中把所有背景图都放在一张图片上减少图片服务器的请求次数问题(转)...