三、Android绘制知识总结(画笔篇)

💡 原文中文,约8300字,阅读约需20分钟。
📝

内容提要

Android绘制知识总结(画笔篇)介绍了Android中常用的画笔类Paint的使用方法,包括设置画笔颜色、样式、宽度等;文字相关的API,如设置字体大小、对齐方式等;字体相关的函数,如设置字体样式、创建字体等;文字的测量,包括文字的外接矩形和宽度等;高级功能,如添加阴影、模糊效果、路径效果、着色器和色彩过滤等。

🔎

延伸解读

文字绘制中的基线定位

文章指出文字绘制位置由TextAlign和baseline共同决定,而非左上角。通过Paint.getFontMetrics()获取FontMetrics对象,其中ascent、top、descent、bottom、leading等变量描述了字体绘制区域与baseline的距离关系。由于坐标系中bottom为正、top为负,计算baseline时需注意符号。理解这些参数有助于精确控制文字在画布上的垂直位置。

阴影与模糊效果对Bitmap透明度的依赖

setShadowLayer和setMaskFilter在作用于Bitmap时,效果受Bitmap是否包含透明通道影响。若图片带有透明通道,阴影不会被模糊,且受shadowColor的alpha值影响;若图片为单色,阴影颜色由shadowColor决定。使用BlurMaskFilter模糊Bitmap时,仅当Bitmap不透明才有模糊效果。可通过extractAlpha方法生成带透明度的纯色阴影图片。

着色器填充顺序与局部矩阵调整

使用BitmapShader等着色器时,填充顺序为先竖向再横向,且从左上角开始绘制,与画笔位置无关。这可能导致单个图片无法充满屏幕或无法在控件中部完整显示。文章提到可通过Shader.setLocalMatrix进行调整,以改变着色器的映射方式,从而解决上述显示问题。

ColorMatrix实现常见色彩效果

ColorMatrixColorFilter通过4x5颜色矩阵对色彩进行处理,文章列举了多种效果:平移运算实现加法、反相作用产生底片效果、缩放运算增强色彩、黑白照片将三通道设为相同灰度值、发色作用交换颜色通道、复古作用混合通道。这些示例展示了如何通过修改矩阵参数来达到不同的视觉风格。

❓

Q&A

Android中的Paint类有什么主要功能?

Paint类用于在画布上绘制不同风格的图形,通过设置其属性如颜色、样式和宽度等来实现。

如何设置画笔的颜色和样式?

可以使用setColor(int color)设置颜色,使用setStyle(Style style)设置样式,样式包括FILL、FILL_AND_STROKE和STROKE。

在Android中如何处理文字的测量?

可以使用measureText方法测量文字宽度,使用getTextBounds方法获取文字的外接矩形。

如何给TextView的文字添加阴影效果?

可以使用setShadowLayer方法为TextView的文字添加阴影,指定阴影的半径、偏移量和颜色。

Paint类中有哪些高级功能?

高级功能包括添加阴影、模糊效果、路径效果、着色器和色彩过滤等。

如何创建和使用自定义字体?

可以使用create方法从字体文件中获取字体,或使用createFromAsset方法从应用的Asset目录加载字体。

🏷️

标签

➡️

继续阅读