WebView.getScale() устарел (но все еще можно использовать)
Рекомендуемый способ получить масштаб для веб-просмотра — использовать WebViewClient.onScaleChanged() http://developer.android.com/reference/android/webkit/WebViewClient.html#onScaleChanged(android.webkit.WebView, float, float)
Я добавил соответствующий обработчик в свой собственный веб-просмотр:
public class CustomWebView extends WebView {
public CustomWebView(Context context) {
super(context);
setWebViewClient(new WebViewClient() {
@Override
public void onScaleChanged(WebView view, float oldScale, float newScale) {
super.onScaleChanged(view, oldScale, newScale);
currentScale = newScale
}
});
}
А теперь проблема: метод не вызывается (по крайней мере, на моем нексусе 7), если я увеличиваю/уменьшаю масштаб с помощью щипка, поэтому он работает хорошо, только если я использую кнопку управления масштабированием.
ScaleDetectorListener.onScaleEnd
вWebView
(а позже и во вспомогательном классеZoomManager
) приводит либо кsetNewZoomScale
( для версииWebKit
) илиsetZoomScale
(для версииZoomManager
) вызывается с масштабомmActualScale
, и эти методы будут запускатьonScaleChanged
только тогда, когда предоставленный масштаб не равенmActualScale
(есть еще одно требование!mPreviewZoomOnly
, но оно выполняется, посколькуonScaleEnd
устанавливает его доfalse
). - person JAB   schedule 26.03.2014