I recently upgraded to Android 4.4, and some features of my application suddenly stopped working.
I have this code to initialize, and then a drawing of my user view. The basic idea is that it adjusts the zoom level so that the whole view matches the screen.
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]; .... }
THIS WORKS ON ANDROID 4.1.2 AND 4.2.2 DEVICES I HAVE
But on Android 4.4 / 4.3 getImageMatrix().getValues(values) stopped working! It returns an identity matrix instead of the transformation matrix that I expect when the application starts!
DEBUG PRINT-OUT:
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]}
I looked around and I can not find the documentation on this. Somehow the image matrix for my view is reset; Android 4.4 has changed the way we should do this? Anyone else run into this issue?
Note: the problem seems to have occurred on Android 4.3 - the same problem occurs on the emulator
UPDATE: I checked the change log from 4.2 to 4.3 , but there is nothing that I can see above the Matrix class or anything related to the View class.
UPDATE 2: My pinch-to-zoom also doesn't work, which uses the same setImageMatrix() method - and it obviously doesn't stick because nothing happens in getImageMatrix().getValues()