我最近升级到 Android 4.4,我的应用程序的某些功能令人惊讶地停止工作。
我有这段代码用于初始化然后绘制我的自定义视图。基本思想是调整缩放级别,使整个视图适合屏幕。
private void initAtZoomLevel(float zoomLevel){
....
Matrix transformMatrix = new Matrix();
transformMatrix.setScale(initialZoomLevel, initialZoomLevel);
float yTransCenter = (screenHeight - mapHeight)/2.0f;
setImageMatrix(transformMatrix);
}
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
float[] values = new float[9];
getImageMatrix().getValues(values);
scaleFactor = values[0];
....
}
这适用于我拥有的 Android 4.1.2 和 4.2.2 设备
但在Android 4.4/4.3上getImageMatrix().getValues(values)
停止工作!它返回一个单位矩阵,而不是我期望在应用程序启动时的变换矩阵!
调试打印输出:
4.1.2: @setImageMatrix(transformMatrix)
: transformMatrix = Matrix{[0.025122833, 0.0, 0.0][0.0, 0.025122833, 566.5][0.0, 0.0, 1.0]}
@getImageMatrix().getValues(values)
: transformMatrix = Matrix{[0.025122833, 0.0, 0.0][0.0, 0.025122833, 566.5][0.0, 0.0, 1.0]}
4.4: @setImageMatrix(transformMatrix)
: transformMatrix = Matrix{[0.025122833, 0.0, 0.0][0.0, 0.025122833, 553.0][0.0, 0.0, 1.0]}
@getImageMatrix().getValues(values)
: transformMatrix = Matrix{[1.0, 0.0, 0.0][0.0, 1.0, 0.0][0.0, 0.0, 1.0]}
我环顾四周,似乎找不到任何关于此的文档。不知何故,我的视图的图像矩阵正在被重置; Android 4.4 是否改变了我们应该这样做的方式?还有其他人遇到过这个问题吗?
注意:问题似乎起源于 Android 4.3 - 在模拟器上运行时也会出现同样的问题
UPDATE:我已经检查过将日志从 4.2 更改为 4.3 http://developer.android.com/sdk/api_diff/18/changes.html,但是在 Matrix 类上方我看不到任何内容,或者与 View 类相关的任何内容。
更新2:我的捏合缩放也不起作用,它使用相同的setImageMatrix()
方法 - 显然它没有坚持下去,因为什么也没有发生getImageMatrix().getValues()