Cerca con Google

Translate

8 ottobre 2012

Tutorial 36 - Template con SplashScreen e controllo tasto Back


Il tutorial di oggi riprende quello pubblicato quasi un anno fa in cui realizzammo un Template generico di un app con SplashScreen e contratto EULA per l'utente.

E' passato diverso tempo da allora e possiamo migliorare tale progetto implementando due nuove importanti ottimizzazioni:

1 - L'app sarà multiscreen, con l'utilizzo delle schermate multiple nativo di App Inventor
2 - L'app sarà in grado di "intercettare" la pressione del tasto back fisico del telefono in modo da visualizzare un messaggio di conferma prima dell'uscita dall'applicazione
Spiego brevemente l'idea alla base di questo template, per prima cosa utilizziamo almeno tre Screen diversi (nel tutorial sono 4)
1 - Screen1 : Viene utilizzato per visualizzare lo SplashScreen e per mostrare la notifica di conferma di uscita
2 - Screen2: E' l'interfaccia principale della nostra app dove metteremo le sue funzioni primarie, ma viene anche utilizzata internamente come "crocevia" per il passaggio tra i vari screen
3 - Screen3,Screen4: Sono sottoschermi della nostra app dove ognuno è libero di mettere le funzioni più adatte al suo scopo

Sappiamo quanto sia fastidioso in AI il fatto che se premo "inavvertitamente" il tasto back del telefono esco immediatamente dall'app, ed anche come sia difficile programmare un bottone per la chiusura definitiva dell'app (indipendentemente dallo schermo in cui mi trovo).

Con questo sistema risolveremo entrambe le problematiche.
Screen1 è uno screen che ci permette di catturare l'evento "back" (che avverrà nel caso volessimo uscire dall'app, sempre in Screen2)
Screen2 funziona da reindirizzatore verso gli altri schermi dell'app (Screen3 e Screen4) [e ci permette di usare correttamente il metodo "close application"]

Vediamoci il video e poi ancora qualche chiarimento sul funzionamento del tutto:


Funzionamento del cambio da una finestra all'altra:
1 - Se siamo in Screen2 e passiamo a Screen3 o Screen4 apriamo semplicemente l'altro screen
2 - Se siamo in Screen3 o Screen4 e vogliamo passare a un altro screen, invece di passare direttamente ad esso, chiudiamo lo screen attuale (e quindi torniamo a Screen2) con un parametro di uscita che è lo schermo che vogliamo aprire. In questo modo ripassiamo sempre da Screen2 e poi da Screen2 apriamo il nuovo screen.
Abbiamo così sempre e solo al massimo due schermi aperti in memoria (Screen2 e Screen3o4) con un risparmio di risorse ed evitiamo l'inconveniente per cui il tasto back non sappiamo bene dove ci riporti (qui ci riporterà sempre in Screen2)

Funzionamento della lettura del tasto "back"
1 - Se siamo in Screen3 o Screen4 il tasto back ci porta allo screen precedente, ovvero a Screen2
2 - Se siamo in Screen2 il tasto back ci porterà SEMPRE a Screen1, usiamo Screen1 per mostrare all'utente una conferma prima dell'uscita, di fatto impedendo uscite "accidentali" dal programma.

Forse a parole sembra tutto molto più complicato, vi invito a scaricare e riutilizzare liberamente il file sorgente che trovate cliccando qua.

13 commenti:

  1. Incomprensibile, quando metto i pulsanti non c'è verso di metterli vicini sulla stessa riga tutto inutile!!! come si usa questo cancro di appinventor?

    RispondiElimina
    Risposte
    1. ciao, gentilmente puoi usare un linguaggio più moderato.
      Ad ogni modo puoi benissimo mettere tutti i pulsanti in linea usando un horizontalArrangement (come mostrato anche nel video mi pare)
      ti consiglio di prendere una maggiore confidenza con App Inventor per capire meglio quello che può fare e se è adatto al tuo utilizzo,saluti

      Elimina
  2. ma poi le ultime applicazione di app inventor dove si trovano? come faccio ad avere degli aggiornamenti o un programma come tutti gli essere umani?

    RispondiElimina
    Risposte
    1. non riesco a capire la tua domanda,
      App Inventor funziona come una web application, quindi quando il MIT rilascia una nuova versione questa è immediatamente disponibile a tutti senza bisogno di aggiornare nulla sul proprio pc.
      Se invece parli dei programmi creati con App Inventor, sta allo sviluppatore decidere il numero di versione, scaricare l'apk, caricarlo sul Play Store, gestire eventuali aggiornamenti , etc...

      Elimina
  3. Ciao, ho seguito il tutorial ma quando avvio l'applicazione sul mio GS2 4.0.3 resta sempre fermo alla splash screen.. Che sia un problema di ICS ?

    RispondiElimina
    Risposte
    1. No,App Inventor è compatibile con ICS, nessun problema, forse qualche errore nel tuo codice,prova scaricando il mio sorgente e vedi se il mio funziona correttamente

      Elimina
  4. Ciao Sebastiano, una semplice domanda: ma se la mia app è composta da un solo screen si può comunque intercettare l'uso del tasto back evitando uscite accidentali ?

    Grazie in anticipo
    Silverio

    RispondiElimina
    Risposte
    1. si, dalla versione v130a di App Inventor è possibile, basta usare l'evento
      Screen1.BackPressed per intercettare il tasto back,
      se guardi sul post della versione v130a pubblicato ieri parlo anche di questo :)

      Elimina
  5. ho notato una cosa seblog!!! una volta avviata l'app è tutto ok...ma nel momento in cui non chiudi correttamente l'app premendo semplicemente il tasto home il controllo back non funziona piu...cioè

    -apro l'applicazione vado in schermata 2 premo back e mi chiede di uscire.
    -riapro l'applicazione premo il tasto home quindi "esco" dall'app, rientrando nell'applicazione che non si è chiusa del tutt premo il tasto back e mi riporta nello splash screen :\

    pensi sia risolvibile???

    RispondiElimina
    Risposte
    1. probabilmente dipende dal fatto che l'app resta aperta in memoria,
      penso si possa risolvere riprogrammando il tutto e non usando più screen1 per intercettare la pressione del tasto back
      infatti da un pò di tempo in AI esiste la possibilità di catturare la pressione del tasto back e programmare un azione a piacere.
      Quindi dovresti modificare il programma togliendo il controllo "col trucco" che abbiamo fatto del tasto back e programmare la visualizzazione del notifier e di tutto il resto all'effettiva pressione del tasto back con l'apposito blocco che ora trovi nel blocks editor,
      se avrò del tempo proverò a rivedere questo tutorial per sistemarlo come ho appena detto :)

      Elimina
  6. Ciao Seba io ho fatto le screen a vecchio modo con i vertical arengment e vorrei fare il messaggio d'uscita ma quando metto il Notifier1.ShowChooseDialog non ho 4 variabili come te ma ne ho 5 l'ultima si chiama cancelable e non so cosa metterci
    che fare?

    RispondiElimina
    Risposte
    1. diciamo che hanno fatto una cag***a!!!...da qualche versione di AI a questa parte il notifier ha un nuovo "plug" chiamato "cancelable",
      se vuoi mantenere il vecchio comportamento metti semplicemente un blocco dalla palette logic, "false"
      se invece vuoi aggiungere anche un tasto con scritto "cancel" per far si che l'utente possa cancellare il notifier allora metti un componente "true"
      molto semplice :)

      Elimina