Android自定义View技巧
前言:
自定义View时,经常遇到View绘制的偏差,图像上下左右偏移,不知道是哪个属性没设置好。怎样更快的解决问题?
我推荐使用截屏+debug来反向推导问题的属性。
示例:
以自定义TextView高亮为例,在TextView选中的word上进行高亮,然后绘制白色选中字体。但绘制高亮背景后,再绘制的白色文字无法与原文字契合。
如上图所示,绘制的白色文字偏下。
分析文字的相关属性
肯定是Ascent、Descent哪里出问题了。但是我又不想一个个试怎么办。
解决方法:
1.截图
- 用AndroidStudio截图,然后保存到本地
- 右键截图文件 打开方式选 画图。
- 在“查看”的tab页面勾选 网格线
- 用滑轮将图片放大到最大(一个格 一像素)
- 使用 矩形框 测量文字偏移像素值(屏幕的右下角,会显示矩形框大小)
从截图可以看出偏移量是20像素
2.Debug
debug到代码中,找着20像素是怎么出来的。
- debug到绘制的代码上,进入断点
- 在屏幕上右击,选择 Evaluate Expression(可以查看、运行 断点所处栈的 局部变量的参数)
- 输入我推测的matrix变量,查看数值
- 发现metrics.top + metrics.bottom 刚好是我要的数值(截图数值是后期截的)
总结:
1.确定偏移像素值: 用截图查找,可以开启开发者模式 显示布局边界,来更有效的测量
2.通过debug,动态的获取View参数,来确定像素值 的属性是什么