Я попытался поиграться с photoswipe и iScroll4, но я хочу, чтобы пользователь уменьшал изображение, и iScroll4, похоже, не работает с Android Ver <= 1.6, согласно тестированию, которое я проводил на Android Emulator SDK. Я думал, что смогу попробовать что-нибудь лучше подходящее для моих нужд. </p>
Итак, AFAIK, и я могу ошибаться, нет способа отследить уровень масштабирования, согласно мета-тегу viewport, на устройствах Android. jQuery Mobile не имеет такой функции; возможно Sencha, PhoneGap или некоторые Android-библиотеки Java способствуют этому, и я был бы более чем рад исправить это!
Так вот, это не самый лучший метод, но я нашел способ, который кажется точным в пределах 1 или 2 пикселей, в худшем случае. Я не был уверен, изменяет ли Android уровень масштабирования при событии изменения ориентации, но я попробовал метод, и он сработал.
Вот код:
$(document).ready(function(){
var ViewportWidth = document.documentElement.clientWidth;
var LayoutWidth = document.documentElement.clientWidth;
$("#Index").css("width", LayoutWidth);
var SetLayoutWidth = function() {
LayoutWidth = Math.round((1/(ViewportWidth/LayoutWidth)) * document.documentElement.clientWidth);
$("#Index").css("width", LayoutWidth);
}
$(window).resize(function() {
ViewportWidth = document.documentElement.clientWidth;
});
$(window).bind("orientationchange", function(event) {
if (navigator.userAgent.match(/android/i))
if (Math.abs(window.orientation) == 90 && event.orientation == "landscape")
SetLayoutWidth();
else if (!window.orientation && event.orientation == "portrait")
SetLayoutWidth();
});
});
Когда пользователь увеличивает масштаб, изменяется ширина визуального окна просмотра, значение которого сохраняется. Отношение визуального видового экрана к ширине видового экрана макета составляет, скажем, 0,8 после увеличения пользователем. Теперь, когда пользователь меняет ориентацию устройства, соотношение делится на 1. Чтобы понять, какой должна быть ширина видового экрана макета на полном экране, в этом примере мне нужно взять 125% ширины визуального видового экрана.
Единственная известная мне проблема, которая может возникнуть, это то, что событие изменения размера может сработать до события изменения ориентации. Я не видел, чтобы это происходило в тестировании, но мне нужно будет определить, как решить эту проблему, если и когда это произойдет.
Спасибо.