Я использую библиотеку PhotoView в своем проекте Android. Проект содержит SaveStatePhotoView, который используется для сохранения состояния (уровень масштабирования, положение) представления изображения при изменении конфигурации (поворот, ...).
// SaveStatePhotoView.java
@Override
protected void onRestoreInstanceState(Parcelable state) {
if (!(state instanceof SavedState)) {
super.onRestoreInstanceState(state);
return;
}
final SavedState ss = (SavedState) state;
super.onRestoreInstanceState(ss.getSuperState());
getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
restoreSavedState(ss);
getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
});
}
Представление работает должным образом на Android 7.1.1 и Android 9.
На Android 6.0.1 состояние потеряно: представление изображения сбрасывается в исходное состояние, когда устройство вращается.
Я подготовил простой проект, чтобы продемонстрировать проблему. Обратите внимание, что я использую PhotoView 1.3.1 намеренно, потому что на данный момент не может включать транзитивные androidx
зависимости.