Aggiornamento: Se si dispone di un'API più recente (> 18) potresti voler dare un'occhiata alla nota alla fine di questa domanda.
Dopo aver lottato per un bel po 'ho trovato la soluzione!
La soluzione non era in zoomming. Lo zoom non è stato abilitato per la pagina html e non ha influenzato la dimensione percepita dall'html.
ho ottenuto abbassando il larghezza del WebView:
ViewGroup.LayoutParams webviewLayoutParameters = mWebView.getLayoutParams();
webviewLayoutParameters.width = (int) (760);
webviewLayoutParameters.height =(int) (webviewHeight);
mWebView.setLayoutParams(webviewLayoutParameters);
Poi, come pagina aveva uno stile che ha cambiato per schermo da inferiore a 768px, è iniziato un aspetto diverso. Molto meglio.
Ma poi Volevo ingrandire quella piccola webview in modo che potesse essere contenuta nell'intero schermo. Per quello ho usato scaleX
e scaleY
.
Questa è la mia soluzione completa commentato:
// First, get the current screen size
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int displayWidth = size.x;
int displayHeight = size.y;
//Then, set the amount you want to make your screen smaller. This means that it will comunicate to the HTML that its 20% smaller than it really is
float amplification_ratio = (float) 0.20;
// Shrink webview size
ViewGroup.LayoutParams webviewLayoutParameters = mWebView.getLayoutParams();
webviewLayoutParameters.width = (int) (displayWidth*(1-amplification_ratio));
webviewLayoutParameters.height =(int) (displayHeight*(1-amplification_ratio));
mWebView.setLayoutParams(webviewLayoutParameters);
// Now scale it the inverse ammount so it will take the full screen.
mWebView.setScaleX(1/(1 - amplification_ratio));
mWebView.setScaleY(1/(1 - amplification_ratio));
ha funzionato abbastanza bene. Sono riuscito a ridimensionarlo in modo da modificare le dimensioni dello schermo. Il restringimento e il ridimensionamento renderanno la qualità dell'immagine un po 'più bassa, ma non è un grosso problema.
Obs: la pagina HTML è stata creata in bootstrap e aveva solo classi per i dispositivi -xs
di bootstrap. Quindi ho dovuto simulare che lo schermo era più piccolo di 768px.
Obs2 (aggiornamento): Naming questa procedura
ho implementato questo sul mio app, testato (modello e l'integrazione), e la sua ora vivono in produzione. Per creare le funzioni e le variabili, dovevo nominare questa procedura. Ciò che fa è come aumentare le dimensioni di un pixel di una webview. In questo modo, la webview occuperà ancora tutto lo schermo, ma avrà una larghezza, in pixel, più piccola.
Con questo in mente, qualsiasi nome come pixelEnlargementFactor
, pixelMagnificationRatio
o pixelSizeMultiplicator
sarà un buon nome.
UPDATE:
ATTENZIONE: Utilizzare il metodo di cui sopra solo in casi specifici!
Avevo una vecchia versione API (15) e un RelativeLayout
con molte opzioni. Allora, lo setInitialScale(120)
non funzionava come volevo.
Ora ho cambiato la mia API in 19 e il mio layout in un più semplice FrameLayout
con un minor numero di opzioni. Ora il comando setInitialScale(120)
insieme a mWebView.getSettings().setUseWideViewPort(false)
ha fatto tutto ciò che ho ottenuto prima con molto meno codice.
Hai esaminato la guida su come visualizzare una vista sul sito Android Dev? Può aiutare .. http://developer.android.com/training/animation/zoom.html#setup – frgnvola
sì. Non sembra di fare. "Espandere" la vista non rende il comportamento della pagina in modo diverso. –
Hmm .. Si potrebbe provare a cambiare il programma utente per far apparire il sito come se fosse su un browser desktop, che potrebbe renderlo migliore su un tablet – frgnvola