Android自定义View技巧

前言:

自定义View时,经常遇到View绘制的偏差,图像上下左右偏移,不知道是哪个属性没设置好。怎样更快的解决问题?

我推荐使用截屏+debug来反向推导问题的属性。

示例:

以自定义TextView高亮为例,在TextView选中的word上进行高亮,然后绘制白色选中字体。但绘制高亮背景后,再绘制的白色文字无法与原文字契合。

Android自定义View技巧

如上图所示,绘制的白色文字偏下。

分析文字的相关属性

Android自定义View技巧

肯定是Ascent、Descent哪里出问题了。但是我又不想一个个试怎么办。

解决方法:

1.截图

Android自定义View技巧

  1. 用AndroidStudio截图,然后保存到本地
  2. 右键截图文件 打开方式选 画图。
  3. 在“查看”的tab页面勾选 网格线
  4. 用滑轮将图片放大到最大(一个格 一像素)
  5. 使用 矩形框 测量文字偏移像素值(屏幕的右下角,会显示矩形框大小)

从截图可以看出偏移量是20像素

2.Debug

    debug到代码中,找着20像素是怎么出来的。

Android自定义View技巧

  1. debug到绘制的代码上,进入断点
  2. 在屏幕上右击,选择 Evaluate Expression(可以查看、运行 断点所处栈的 局部变量的参数)
  3. 输入我推测的matrix变量,查看数值
  4. 发现metrics.top + metrics.bottom 刚好是我要的数值(截图数值是后期截的)


总结:

    1.确定偏移像素值: 用截图查找,可以开启开发者模式 显示布局边界,来更有效的测量

    2.通过debug,动态的获取View参数,来确定像素值 的属性是什么