giovedì 26 gennaio 2012

webView su Android per Python


Python per SL4A e' un linguaggio completo ma con scarso controllo sulla grafica dell'output
Per poter avere una interfaccia utente piu' completa (al di la' della schermata terminale) si puo' usare il controllo di webView che permette di impaginare la schermata come una pagina html

di seguito un esempio minimale

--------------------------------------------------------------------------------------------------------------------
import time
import android
from string import Template
pagina = '''<html><body>
<h1>Contatore</h1>
<ul>
<li><strong>Contatore: $contatore</li>
</ul>
</body></html>'''
if __name__ == '__main__':
    droid = android.Android()
    contatore = 1
    while contatore < 10:
        f = open('/sdcard/sl4a/scripts/contatore.html', 'w')
        s = Template(pagina)
        modifica = s.safe_substitute(contatore=str(contatore))
        f.write(modifica)
        f.close()
        droid.webViewShow('file:///sdcard/sl4a/scripts/contatore.html')
        time.sleep(1)
        contatore = contatore + 1

--------------------------------------------------------------------------------------------------------------------


pagina e' una stringa che contiene il codice html piu' un tag speciale $contatore che sara' sostituito in modo dinamico durante l'esecuzione dello script.
In pratica la stringa Html diventa un template che viene modificato per sostituzione del tag speciale con il valore desiderato; il template poi viene riconvertito in stringa e poi salvato su file che sara' visualizzato da webView
E' possibile impaginare anche mediante css

Attenzione: se si perde il controllo dello script e' difficile interromperlo perche' sara' visualizzato a pieno schermo la finestra di webView