Autore Topic: Problema con webview e immagine  (Letto 807 volte)

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Problema con webview e immagine
« il: 19 Gennaio 2012, 18:25:22 CET »
0
Ragazzi sto impazzendo per tentare di risolvere un problema che si verifica sulla mia app. Allora ho una activity che comprende una webview che carica un file html che visualizza un'immagine png. Nell'html poi è presente del codice javascript che prende le dimensioni dello schermo e fa il resize dell'immagine in base allo schermo. Tutta questa parte funziona solo che se vado a mettere il telefono in landscape l'immagine non viene più visualizzata pur avendo dichiarato la webview come static.
Non so più che pesci pigliare, posto l'html e il js per completezza

Codice (XML): [Seleziona]
<html>
<head>
        <script type="text/javascript" src="jquery.js"></script>
        <script type="text/javascript" src="map_resize.js"></script>
</head>
<body>
        <center>
                <img id="mappa" src="mappa_otranto.png">
        </center>
</body>
</html>

Codice: [Seleziona]
$(document).ready(function() {
                        $(window).load(function() {
                                resizeMap();
                        });
                       
                        function resizeMap() {
                                var window_width = $(window).width();
                            var window_height = $(window).height();
                            var image_width = $("#mappa").width();
                            var image_height = $("#mappa").height();

                            if (window_width==0 || window_height==0 || image_width==0 || image_height==0) return;
                         
                            var proportion_width = image_width / window_width;
                            var proportion_height = image_height / window_height;
                            var proportion = 0;
                           
                            if (proportion_width < proportion_height) {
                             proportion = proportion_height;
                            } else {
                             proportion = proportion_width;
                            }
                           
                            var larghezza = image_width / proportion;
                            var altezza = image_height / proportion;
                           
                            alert("larghezza " + window_width + " - altezza: " + window_height);
                           
                            $("#mappa").css("width", larghezza+"px");
                            $("#mappa").css("height", altezza+"px");
                        }
                });

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Problema con webview e immagine
« Risposta #1 il: 19 Gennaio 2012, 21:40:06 CET »
0
togli il $(window) e fai direttamente il resizeMap nel ready
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:Problema con webview e immagine
« Risposta #2 il: 19 Gennaio 2012, 21:52:27 CET »
0
Se lo levo il resize va in errore perchè fa il resize quando l'immagine non è ancora pronta

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Problema con webview e immagine
« Risposta #3 il: 19 Gennaio 2012, 22:02:15 CET »
0
mi pare strano, il document.ready è quando è pronto... prova a mettere window.ready allora...
io per una versione desktop avevo fatto qualcosa del tipo:
Codice: [Seleziona]
$(window).resize(function(){
                if ($.browser.msie && $.browser.version < 9) {
                }else {
                        height = $(window).height();
                        height = height * 0.85;
                        $("#pageContainer").height(height);
                        resizeContainer();
                        updateImage(url);
                }
    });
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:Problema con webview e immagine
« Risposta #4 il: 19 Gennaio 2012, 22:07:09 CET »
0
Ok domani faccio la prova perchè il codice non ce l'ho con me adesso

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:Problema con webview e immagine
« Risposta #5 il: 20 Gennaio 2012, 12:25:18 CET »
0
Ciao allora col window resize va decisamente meglio, ora l'immagine esce sempre e comunque quindi ti ringrazio sentitamente  :)
Solo che ora devo sistemare delle piccolezze, ad esempio ho notato che se faccio lo zoom con le dita è tutto ok, se invece faccio lo zoom con i pulsanti +/- lo vede come un resize e parte la funzione relativa. Ho inserito anche delle variabili di controllo per tentare di controllare il tutto, ti posto il codice completo attuale
Codice: [Seleziona]

$(document).ready(function() {
                       
                        $(window).load(function() {
                                var valore_controllo_load = $("#valore_controllo_load").val();
                                if (valore_controllo_load == 0) {
                                        resizeMap();
                                        $("#valore_controllo_load").val("1");
                                }
                        })
       
                        $(window).resize(function() {
                                var valore_controllo_resize = $("#valore_controllo_resize").val();
                                if (valore_controllo_resize == 0) {
                                        resizeMap();
                                        $("#valore_controllo_resize").val("1");
                                }
                        });
                       
                        function resizeMap() {
                                var window_width = $(window).width();
                            var window_height = $(window).height();
                            var image_width = $("#mappa").width();
                            var image_height = $("#mappa").height();


                            if (window_width==0 || window_height==0 || image_width==0 || image_height==0) return;
                         
                            var proportion_width = image_width / window_width;
                            var proportion_height = image_height / window_height;
                            var proportion = 0;
                           
                            if (proportion_width < proportion_height) {
                             proportion = proportion_height;
                            } else {
                             proportion = proportion_width;
                            }
                           
                            var larghezza = image_width / proportion;
                            var altezza = image_height / proportion;
                           
                            //alert("larghezza " + window_width + " - altezza: " + window_height);
                           
                            $("#mappa").css("width", larghezza+"px");
                            $("#mappa").css("height", altezza+"px");
                        }
                });