Cerca con Google

Translate

3 luglio 2012

Tutorial 33 - Copiare blocks e design editor da uno Screen ad un altro/i


Quello di oggi sarà un tutorial un pò diverso, non vedremo infatti dei componenti nuovi ma vi spiegherò come sia possibile con dei "trucchetti" creare un applicazione multiscreen riutilizzando il codice che abbiamo inserito nello Screen1.

Mettiamo ad esempio che abbiate un applicazione creata tanto tempo fa quando ancora il multiscreen non esisteva.
Avevate fatto tutto con i metodi "visible" per simulare il multiscreen (come nel mio Tutorial 21 - Realizzare un applicazione con schermate multiple) ed ora vorreste utilizzare la nuova funzione nativa per gli schermi multipli.


Che fare? copiarsi a mano tutti i blocchi da diciamo Screen1 allo Screen2 e poi allo Screen3?
Non esistendo il copia incolla su screen diversi sareste costretti a stamparvi le schermate del blocks editor di Screen1 e poi reinserire a mano il tutto in Screen2 o dove ne avete bisogno.
Questo processo è ovviamente lungo, faticoso incline all'inserimento di errori non voluti!

Fortunatamente i soliti smanettoni che sviscerano tutti i segreti di AI han trovato un metodo un pò "brutale" ma efficace per risolvere velocemente la cosa.
In pratica si tratta di scaricare il file .zip del progetto, scompattarlo sul nostro pc e rinominare ad hoc i file del design e del blocks editor per fargli credere che abbiamo editato veramente a mano i nostri nuovi schermi :)

Nel video vedrete tutti i passaggi, in breve ve li riassumo anche qua:
1 - Prendete il vostro progetto e fatene una copia
2 - Aggiungete i nuovi schermi che vi servono
3 - Scaricate il file zip del progetto originale
4 - Scompattate e navigate in src\appinventor\ai_vostrousername\vostroNomeProgetto
5 - Copiate Screen1.blk (file del blocks editor) e Screen1.scm (design editor) in due nuovi file
6 - Questi due nuovi file devono chiamarsi come i nomi degli screen che avete aggiunto al punto 2
7 - Modificate in project.properties i nomi degli screen con quelli assegnati al punto 2
8 - Ricompattate il file .zip
9 - Caricate tramite "Upload Source" in App Inventor
10 - Il vostro progetto avrà una copia di Screen1 negli schermi che avete aggiunto al punto 2
11 - A questo punto potete modificare tutti gli screens a seconda delle vostre necessità! :)




24 commenti:

  1. Fantastico!!! Aspettavo da tanto qualcosa che permettesse di copiare i blocchi, come dici tu è un metodo un po' "brutale" ma alla fine copiarsi tutti quei blocchi sopratutto quando hai fatto un'app abbastanza complessa con tanta roba dentro, beh è ottimo anche questo metodo, ho seguito il video che era perfetto e beh che dire grazie mille!!!!

    RispondiElimina
  2. mi associo a mikebasta, dire che il video e l'idea erano fantastici è veramennte poco.. BRAVOOOOOO!!!

    RispondiElimina
  3. Eccomi, fatto tutto, avevo fatto il primo livello di un giochino memory, seguendo le dritte di Sebby, poi quando credevo di averlo perfezionato mi sono accorso che per riopiare il codice e fare altri 2 livelli, ci avevo messo dimedia un'altra giornata di lavoro, che come sapete non è mai continuativa, quindi un progettino anche semplice, si porta via (a tempo perso ovvio) minimo un mesetto, se poi bisognava copiare il tutto (e che avevo ridotto i tempi usando procedure) per competare il gioco con i suoi 8 livelli m vedevo già l'uscita per natale.. invece tra ieri e l'altro ieri ho gia ricopiato gli altri 5 livelli che mancavano adessom i basta fare due modifiche , diciamo una giornata intera di lavoro e loposso pubblicare.
    unici poblemi riscontrati, ma non so se dipende dal mio p.c. dal mio java o cosa, difficoltà nel ricreare una copia di sicurezza del mio progetto, io sto lavorando su memory free e volevo salvare come memory free copy e mi dava errori, poi sono riuscito e volevo risalvare come memory_Full, ma non me lo fa fare. diciamo anche che il file è grossetto..., ma per il resto tutto ok

    RispondiElimina
    Risposte
    1. Anche a me ci sono stati dei problemi nel eseguire la funzione copy , credo che se la effettui con il block editor chiuso e non lavori con niente sia meglio...fra l'altro l'operazione non è immediata ma ci mette un po. Ciao.

      Elimina
    2. Meglio di sicuro chiudere il blocks editor ed essere nella schermata my project quando si fanno queste operazioni.
      Per progetti grossi ovviamente il tempo di download e upload della nostra app può risultare abbastanza lungo, basta avere pazienza e sperare che i server AI reggano :)

      Elimina
  4. ciao seba nella mia pagina ho pubblicato un metodo piu semplice per copiare i block. questo è il link : http://www.gd-web.eu/appinventor/app-inventor-copiare-gli-screen-e-relativo-blocks-editor/

    RispondiElimina
    Risposte
    1. grazie per la segnalazione, preferisco però il mio metodo che anche se un pò più lungo ci permette di cambiare nome ai nuovi schermi che creiamo e sopratutto fa capire cosa succede "dietro le quinte"
      Ad ogni modo anche l'utility di Tair è molto comoda e sopratutto rapida

      Elimina
  5. 3 settimane fa mi avrebbe risparmiato una fatica enorme...domani proverò ad estremizzare la procedura, voglio copiare i blocchi da una applicazione ad un altra, farò un tentativo, magari funziona!
    P.S.: che software usi per fare i video?

    RispondiElimina
    Risposte
    1. Ciao salvo mi dispiace essere arrivato un po tardi peccato comunque per l'altra domanda che mi fai puoi provarci da te oppure aspettare il mio prossimo tutorial che tratterà proprio quell'argomento

      Elimina
    2. mi riferisco ai video tutorial che metti su youtube, volevo un consiglio per fare uno video screen capture. Grazie

      Elimina
    3. Confermo che si possono unire anche screen provenienti da altri project e non obbligatoriamente dallo stesso copiato.

      Elimina
    4. blueberry flashback express, questo il nome del programma che uso io
      ciao

      Elimina
  6. Ciao ragazzi, ho due domande da porevi. POSSO USARE X LA MIA APPLICAZIONE L IMMAGINE DEL ROBOTTINO ANDROID MODICANDOLO TIPO AGGIUNGENDO UN CAPPELLO O PATTINI, o RISCHIO DI VIOLARE QUALCHE COPYRIGHT? C'è un modo x uplodare tramite facebook...es faccio un disegno su canvas,posso uplodarlo tramite un tasto sulla mia pagina facebook??

    RispondiElimina
    Risposte
    1. nessun problema di Copyright, puoi usare Androidify per creare i tuoi personaggi volendo.
      Per caricarli su FB servono le api di FB e di sicuro in App Inventor non ci sono,però puoi magari caricarlo su un server web che faccia da tramite (col componente web e il metodo Post) che poi riprende l'immagine e la carica su Fb.

      Elimina
  7. grazie mille! solo una cosa seba, non è che potresti fare un tutorial sul problema facebook?? NN HO CAPITO QUESTO SERVER WEB DOVE LO VADO A PRENDERE?? ... UN'ALTRA INFO: POSSO VISUALIZZARE LO STESSO CANVAS PRESENTE SUL MIO CELL SU UN ALTRO CELL??

    RispondiElimina
  8. il server web deve essere tuo e devi avere te il codice che prende in ingresso l'immagine tramite POST e poi la ricarica su Facebook, onestamente non saprei neanch'io come farlo perchè non ho esperienza di server web "miei"
    l'altra domanda non l'ho capita sinceramente, cmq scrivimi per email visto che questo tutorial non c'entra nulla con quello che mi stai chiedendo ... :)

    RispondiElimina
  9. Risposte
    1. Se mi posso permettere: ecco la sua email seblogapps@gmail.com

      Elimina
  10. Prima di tutto ti ringrazio per il grande aiuto che dai ai neofiti come me, io stò cercando di realizzare un app che carica gli rss di un mio sito.
    Il primo problema era come prelevare l'rss questo lò superato utilizzando http://appinventorapi.com/rss-feeds/
    Il secondo era duplicare nell'app Tiny RSS,e questo mè l'hai risolto tu.
    Ora però ti chiedo Tiny RSS permette di inserire l'url io invece vorrei preinpostare l'url e non farla visualizzare, così da avere le pagine che mi interessano nell'app.
    Ultima domanda, cosa per me difficilissima, e capire come importare un certo numero di notizie nell'app, cosi da avere le ultime notizie disponibili anche in modalità off-line.
    Grazie di tutto.

    RispondiElimina
    Risposte
    1. Ciao Gianluca, non ho visto molto bene il Tiny RSS (che è un utility creata da un gruppo di appassionati di AI ma non è parte del progetto ufficiale)
      cmq da quel che vedo ti danno il sorgente per AI, quindi lo puoi modificare per fargli cmq caricare il feed RSS ma tu puoi impostare l'indirizzo da blocks editor e non far vedere il campo con l'indirizzo in design editor,non dovrebbe essere una modifica complessa.
      Anche per importare solo un tot numero di notizie, dovresti invece studiarti il codice pyton che han dato nello stesso sito, modificarlo in base alle tue necessità (la cosa è complessa,dipende da quanto te ne intendi di programmazione) per fargli caricare solo tot notizie...
      Altrimenti potresti cmq caricare tutte le notizie in app inventor e poi sempre tramite app inventor visualizzare solo le ultime,
      il tutto ovviamente può essere abbastanza complesso e lungo da realizzare
      Per salvarle per la lettura offline devi usare il TinyDb, dopo che hai caricato tutto tramite Tiny RSS salvi tutti i dati col TinyDb,
      quando carichi l'app controlli se il TinyDb non è vuoto (se non lo è vuol dire che hai dei dati salvati dall'ultimo accesso all'app), carichi i dati e li visualizzi.
      spero di averti dato qualche "dritta",ripeto il tutto non è proprio alla portata di un neofita ma con studio e impegno ce la puoi fare :)

      Elimina
    2. Scusatemi, con AI2 come si scarica il file source per eseguire la sostituzione degli screen e come poi si ricarica?

      Elimina
    3. http://seblogapps.blogspot.it/2012/07/tutorial-34-copiare-screens-blocks-e.html?showComment=1392644633096#c8697227863864247273

      Elimina