开篇
安卓写自定义View中有一个类相信大家不会陌生,那就是Canvas。Canvas给我们调用者提供的api也很丰富。我们经常用到的画圆(drawCircle),画线(drawLine)。今天我们的要看的问题,是drawText(文字)。为什么要单独说画文字,因为安卓的drawText中,基线问题常常困扰我们,到底该怎么计算基线?正题开始:
1.为什么会有基线?
汉字字母数字不在一个水平线上,g的底部跟h的底部不在同一水平线上(看下图)
image
在绘制汉字的时候并不是从底部(蓝色线)开始绘制,而是以图中红色的线绘制文字。
2.安卓中如何计算基线
首先,我们都知道我们安卓屏幕的坐标系是右下坐标系,即x轴朝右越来越大,y轴朝下越来越大。知道这个,我们先看下官方提供的api:
/**
* Draw the text, with origin at (x,y), using the specified paint. The origin is interpreted
* based on the Align setting in the paint.
*
* @param text The text to be drawn
* @param x The x-coordinate of the origin of the text being drawn
* @param y The y-coordinate of the baseline of t