Недавно я обновился до 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 – такая же проблема возникает и на эмуляторе
ОБНОВЛЕНИЕ: я проверил журнал изменений с 4.2 на 4.3., но я ничего не вижу над классом Matrix или чем-либо, относящимся к классу View.
ОБНОВЛЕНИЕ 2: у меня тоже не работает масштабирование, в котором используется тот же метод setImageMatrix()
, и он явно не работает, потому что в getImageMatrix().getValues()
ничего не происходит.
getImageMatrix
иsetImageMatrix
) - person kburbach   schedule 09.12.2013