《Android自定义控件入门与实战》读书笔记--第6章 Paint基本使用

6.1 硬件加速

6.1.1 概述

  1. GPU:图形处理器
  2. API 11 之前没有 GPU 概念,API 14 硬件加速功能默认开启,API 11 - 13 默认是关闭的。

6.1.2 软件绘制与硬件加速区别

  1. CPU
  • 让 View 层次结构失效
  • 绘制 View 层次结构
  1. GPU(实际上使用 OpenGL 相关函数完成实际绘制)
  • 让 View 层次结构失效
  • 记录、更新显示列表
  • 绘制显示列表
  1. GPU 问题
  • 兼容
  • 内存消耗
  • 电量消耗问题

6.1.3 禁用 GPU 硬件加速的方法

1.application
<application android:hardwareAccelerated="false">
2.activity
<activity android:hardwareAccelerated="false">
3.在 Window 层次上使用(不支持关闭)
getWindow.setFlags(
   WindowManager.LayyoutParams.FLAG_HARDWARE_ACCELERATED, 
   WindowManager.LayyoutParams.FLAG_HARDWARE_ACCELERATED) 
)
4.在 View 层次上使用如下代码关闭硬件加速(不支持开启硬件加速)
4.1.setLayerType(View.LAYER_TYPE_SOFTWARE,null)
4.2.android:layerType="sofware"

6.2 文字

6.2.1 概述

  1. 基线
public void drawText(String text,float x,float y,Paint paint)
x,y 表示的是基线的位置坐标
1.paint.setTextAlign() Paint.Align.CENTER 左中右

6.2.2 绘图四线格与 FontMetrics

  1. 四线格
  • top 可绘制的最高高度
  • ascent 字符最高高度所在线
  • baseline
  • descent
  • bottom
  1. FontMetrics 计算 四线格位置
fontMatric.ascent = ascent的y坐标-baseline的y坐标-->负数
descent = descent的y坐标 - baseline的y坐标 --> 负数

6.2.3 常用函数

1.字符串所占区域高度
Paint.FontMetrics fontMetrics = mPaint.getFontMetrics();
int top = (int) (baseLineY + fontMetrics.top);
int bottom = (int) (baseLineY + fontMetrics.bottom);
int height = bottom - top;
2.宽度
mPaint.measureText(String text);
2.最小矩阵
mPaint.getTextBounds()

6.3 Paint 常用函数

  1. setPathEffect(PathEffect effect) 设置路径样式
  2. setStrokeCap(Paint.Cap cap) 设置线帽
  3. setStrokeJoin(Paint.Join join) 设置转角
  4. setDither(boolean dither) 设置抗抖动效果
  5. setSubpixelText(boolean subpixelText) 亚像素 增加清晰度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值