У меня была та же проблема с матрицей, масштабированием и просмотром изображения, и самое простое решение, которое я нашел, - визуализировать изображение дважды, один с помощью fitcenter scaleType и Matrix.
После многих (действительно многих ..) соблазнов с setRectToRect и решением, упомянутым ранее (и т. Д.), Я наконец-то нашел решение (по крайней мере, для моего случая, подобное посту):
В просмотре изображений в xml установите fitcenter:
<ImageView
...
android:scaleType="fitCenter"
Затем в вашем Java-файле определите функцию инициализации при изменении фокуса
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
init();
}
}
private void init() {
maxZoom = 10;
minZoom = 1f;
height = viewHeight;
width = viewWidth;
**Matrix m = imageSWT.getImageMatrix();
imageSWT.setScaleType(ScaleType.MATRIX);
matrix.set(m);**
}
Так что я используюсвойство fitcenter и затем я получаю его матрицу, после чего я переключаюсь в режим Matrix (для функции масштабирования) и сохраняю fitcentered-matrix в объект matrix-zoom для сохранения изменений при использовании масштабирования.
Надеюсь, это решение кому-нибудь поможет;)