我的 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[]) 方法的结果。
回答问题,并分享我的“肮脏”解决方案。
- 这是我在 onDraw() 方法中从画布中取出的 canvas.getMatrix() 矩阵。
- 为了解决这个问题(我需要这个矩阵来了解我的 ImageView 上图像的哪个区域被点击),方法是添加一个我在开始时根据矩阵的初始状态设置的参数。