WebView.getScale() è sconsigliata (ma ancora utilizzabile)Come arrivare scala WebView in Android 4
Il metodo consigliato per ottenere scala per la visualizzazione web è quello di utilizzare WebViewClient.onScaleChanged() http://developer.android.com/reference/android/webkit/WebViewClient.html#onScaleChanged(android.webkit.WebView, float, float)
ho aggiunto gestore corrispondente nel mio WebView personalizzato:
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
}
});
}
E ora il problema: il metodo non invocato (almeno sul mio Nexus 7) se sono lo zoom in/zoom out tramite pinch, quindi funziona bene solo se uso i controlli dello zoom ma tonnellata.
Hai trovato la risposta ormai? Ho lo stesso problema. –
Non ho trovato il modo di prendere le scale cambiate anche, ma il mio scopo era quello di tracciare la scala attuale, quindi sono stato costretto a usare WebView.getScale() obsoleto invece di scalare l'approccio del listener. Se devi monitorare l'evento di modifica della scala su webview, prova a impostare il rilevatore di gesti personalizzato su Webview e semplicemente traccia gli eventi di pizzicamento. Non sono sicuro che funzionerà, solo un'idea. – abovesun
Non ho ancora una soluzione (e non penso ci sia una diretta in questo caso), ma ho scoperto il motivo: la richiamata 'ScaleDetectorListener.onScaleEnd' in' WebView' (e più tardi il 'ZoomManager 'classe helper 'restituisce' setNewZoomScale' (per la versione' WebKit') o 'setZoomScale' (per la versione' ZoomManager') chiamata con scala 'mActualScale', e quei metodi attivano' onScaleChanged' solo quando il la scala non è uguale a 'mActualScale' (esiste un altro requisito'! mPreviewZoomOnly', ma quello è soddisfatto poiché 'onScaleEnd' lo imposta su' false'). – JAB