Чтобы ответить на мой собственный вопрос: -
я нашел гораздо лучший способ реализации обнаружения масштабирования, которая работает для щепотку зумом, а также двойное нажатие (любое событие масштабирования, без необходимости переопределить каждый метод) .Found его нигде в Интернете, чтобы обнаружить зум event.If есть гораздо более эффективный способ, пожалуйста, дайте мне знать :)
(Также я использую Крис BaneS PhotoView библиотеки для обработки зуммирования.)
Так, чтобы обнаружить событие масштабирования, получить прямоугольник текущего фотоизображения и когда произойдет событие масштабирования, OnMatrixChangeListener вызывается и там вы сравниваете прямоугольники, чтобы видеть.
(Теперь просто использовать этот прослушиватель для обработки события масштабирования не получится, потому что прослушиватель вызывается, каждый раз, когда вы меняете изображение, (если вы используете его в галерее), он также вызывается, когда ориентация экрана меняется, а также когда на экран выводятся простые приближения без масштабирования.)
Также, когда меняется ориентация экрана, иногда фотообъем возвращает прямоугольник 0, поэтому вы должны проверить это также, вот мой код: - if (savedInstanceState.getBoolean (Constants.ZOOM)) { photoViewAttacher = новый PhotoViewAttacher (backgroundImage);
mWindowRect = new RectF(photoViewAttacher.getDisplayRect());
photoViewAttacher.setOnMatrixChangeListener(new PhotoViewAttacher.OnMatrixChangedListener() {
@Override
public void onMatrixChanged(RectF rect) {
//need to differentiate between screen orientation
if (mWindowRect.left == 0 && mWindowRect.top == 0 && mWindowRect.right == 0 && mWindowRect.bottom == 0) {
mWindowRect = new RectF(rect);
}
if (Math.abs(mWindowRect.left - rect.left) < 2 && Math.abs(mWindowRect.top - rect.top) < 2 && Math.abs(mWindowRect.right - rect.right) < 2 && Math.abs(mWindowRect.bottom - rect.bottom) < 2) {
viewPager.setLocked(false);
thumbnailsContainer.startAnimation(appear);
thumbnailsContainer.setClickable(true);
} else {
viewPager.setLocked(true);
thumbnailsContainer.startAnimation(disappear);
thumbnailsContainer.setClickable(false);
}
Log.i("ZOOM", "default rect: " + mWindowRect);
Log.i("ZOOM", "zoom rect: " + rect);
}
});
есть куча слушателей и куча способов для увеличения, и они получают уведомление, даже если пользователь не намерен увеличить –
Глядя на [в пределах шкалы реализации] (https: // GitHub. com/chrisbanes/PhotoView/blob/master/library/src/main/java/uk/co/senab/photoview/PhotoViewAttacher.java # L499) пользователь уведомляется только о том, когда установлен слушатель. И не изменяет состояние представления. –
Даже при прокрутке изображений метод вызывается и вызывает непреднамеренное поведение. –