1

我的 Android 应用程序中的 canvas.getMatrix 值有一个奇怪的问题。对于我拥有的自定义视图(我的类,扩展 ImageView),getMatrix() 在“全新”视图上的结果在两个设备(和两个操作系统)上是不同的。各种对我来说没有意义的方式(例如不依赖于维度)。

  • 我的视图在布局上排在第二位,仅次于 64dp,在两种设备(Nexus7 和 HTC Desire)上都映射到 96px。
  • 在 Nexus 上,初始 matrixFloats[Matrix.MTRANS_Y] 结果为 0(然后当我开始滚动和缩放时它当然会改变)。
  • 在 HTC Desire(和 Kindle Fire)上 - 起始值为 96。

Canvas Matrix 在不同版本的 Android 之间有什么不同吗?

感谢您的任何建议 - 希望有人熟悉这个问题。

PS。matrixFloats 是一个 float[9] 数组,它是 Matrix getValues(float[]) 方法的结果。

回答问题,并分享我的“肮脏”解决方案。

  1. 这是我在 onDraw() 方法中从画布中取出的 canvas.getMatrix() 矩阵。
  2. 为了解决这个问题(我需要这个矩阵来了解我的 ImageView 上图像的哪个区域被点击),方法是添加一个我在开始时根据矩阵的初始状态设置的参数。
4

0 回答 0