Vediamo oggi come è possibile, con un piccolo sforzo di programmazione in più, utilizzare nelle nostre App dei pulsanti (Button) che abbiano un aspetto grafico diverso da quello di default di App Inventor.
Come ormai saprete infatti, i pulsanti "base" di App Inventor (quelli che trasciniamo nel nostro progetto dalla palette basic) sono si utilissimi e molto facili da utilizzare, ma peccano dal punto di vista visivo, in quanto sono tutti uguali ed aimè poco accattivanti...
Ecco un esempio di come si presentano i pulsanti di default sul mio DHD:
Esempio dei pulsanti di default offerti da App Inventor |
Mentre, utilizzando la property "image" del componente button, potremmo realizzare un qualcosa dal look più moderno e fantasioso:
Esempio di pulsanti realizzati con buttongenerator.com |
In un prossimo tutorial vedremo anche un terzo metodo, che utilizza gli sprites come pulsanti, per aggirare le problematiche di posizionamento e allineamento dei pulsanti in App Inventor.
Come sempre, buona visione!
Per la creazione dei vostri pulsanti suggerisco questi due ottimi siti gratuiti:
http://www.buttongenerator.com/
http://www.mycoolbutton.com/3d-free-button-generator.php
ovviamente ne esistono molti altri, a voi il piacere della scoperta!
Il file sorgente del progetto utilizzato lo trovate cliccando qua
Complimenti anche per questo video, con questi bottoni si riescono a creare delle app veramente carine, ti chiedo una cosa, ho visto che sulla tua app dell Ristorante ci sono anche i menu, credo che siano delle immagini come sei riuscito a gestire la dimensione per visualizzarla in una pagina e avere delle scritte cosi nitide ? io ho provato con un file jpg ma mi si sfuoca la scitta.
RispondiEliminaGrazi mille.
Ciao, il "trucco" è quello di usare una risoluzione il più vicino possibile a quella del tuo device, nell'esempio dell'app del ristorante ho usato immagini alla dimensione 480x636 (sarebbe 480x800 - l'altezza del banner che c'è in tutte le pagine)
RispondiEliminase non hanno la corretta dimensione, come hai giustamente notato, sgranano parecchio...
sperimenta partendo da 480x800 come base!
Ciao, complimenti di nuovo, ogni video idee nuove, volevo però chiederti una cosa. Ho un HorizontalArrangement con tre button, di default app inventor mi mette l'horizontalArrangement in alto, è possibile metterlo in basso?
RispondiEliminaGrazie
Purtroppo ai non supporta ancora quello che in android si chiama gravity,quindi non è possibile farlo
EliminaPuoi inserire un vertical arrangment a fill parent e poi sotto l'horizontal ed otterrai un qualcosa di simile anche se non è la soluzione ideale...
Ciao Seba,
RispondiEliminaho scoperto appinventor tramite i tuoi numerosi tutorial,
ti faccio i complimenti per la chiarezza e perche' rendi molto semplice l uso che proprio semplice non e' hihihihih
Ho seguito quasi tutti i tuoi tutorial, e mi e' venuta voglia di farmi un app banalissima, ma mi sono gia bloccato ihihih
tieniti forte , sto per chiederti di mandare un uomo su marte con la mia app! hihihi scherzo,
In pratica voglio associare ad un button, un link, in poche parole, clikkando sul tasto mi si deve aprire una pagina youtube per esempio.
nello screen1 inserisco il tasto e il componente web, poi apro la pagina a blocchi e monto:
quando clik sul tasto, set web1 url, tex (http:// .....)
salvo, apro l emulatore,lo connetto, provo , ma non succede niente,
Potresti aiutarmi a risolvere quest inghippo?
Ti faccio di nuovo i complimenti ,seguo il tuo blog in attesa di altri tutorial per imparare qualcosa di piu,
grazie in anticipo,
Ciao ;-)
Ciao Fausto! son contento che ti piacciano i miei tutorial!
Eliminahai ancora un pò di "confusione", devi usare un activitystarter e non il componente Web (activitystarter serve per lanciare applicazioni esterne come appunto il browser o youtube mentre il componente web "legge" e riceve dati da siti web)
Il suo uso è semplice, segui queste istruzioni (eventualmente sul tutorial google maps alla fine quando parlo di streetview trovi spiegato lo stesso concetto...)
-aggiungi un componente ActivityStarter
-nelle sue proprietà metti (per aprire il browser):
Action: android.intent.action.VIEW
DataUri: http://www.youtube.com
a questo punto al click del pulsante assegni l'azione startactivity
Se vuoi fare altro in genere si cambiano i parametri dell'activitystarter, per esempio per youtube:
Action: android.intent.action.VIEW
ActivityPackage: com.google.android.youtube
ActivityClass: com.google.android.youtube.PlayerActivity
DataUri: http://www.youtube.com/watch?v=8ADwPLSFeY8
dove la parte dopo la v= è il "codice" del video di youtube che vuoi vedere,
spero di essere stato abbastanza chiaro!
Ciao nell'esempio che fai cambiando i paramentri di activitystarter a me mi dà un errore!!
EliminaPosso chiederti alcune cose?
1)è possibile far partire subito il video senza doverci cliccare sopra?
2) è possibile associare una presentazione di foto ad un pulsante!
Vorrei far partire questa slide di foto premendo un pulsante http://snack.to/pz15gf08 come faccio? se è possibile utilizzare a schermo intero http://files.photosnack.net/app/swf/EmbedCanvas.swf?hash_id=pz15gf08&t=1341149052
Grazie!
Ciao Fabio, hai due strade percorribili
Elimina1 - usa una webview, crei un pulsante (o più di uno a seconda di come vuoi impostare l'app) ed una webview
alla pressione del pulsante carichi l'url nella webview e carichi la pagina internet
2 - usi un activitystarter, in questo modo partirà il browser di default del tuo telefono all'url specificato in design editor
puoi far partire in automatico la cosa legando il caricamento della webview a screen1.initialize per esempio
per lo schermo intero ti conviene trovare un servizio web che faccia già uno slideshow a schermo intero, magari anche photosnack lo fa ma non sono pratico
in bocca al lupo...:)
ritornando in tema con questo tutorial, ci sarebbe un modo per far cambiar colore ai button immagine se pigiati?
RispondiEliminacerto, su evento button.click imposti l'azione set button.backgroundcolor to , al colore che vuoi te...
Eliminacon button.textcolor cambi il colore del testo volendo...
se invece parliamo di pulsanti creati con una backgroundimage, allora all'evento click dobbiamo far cambiare l'immagine con un'altra che abbia l'effetto del bottone pigiato.
EliminaOgni pulsante dovrà avere due immagini, una nello stato normale una in quello pigiato...
si, si, mi riferivo alla seconda soluzione, due immagini per pulsante, il problema è dove mettere la seconda immagine.
RispondiEliminaAnche con un'altra app ho lo stesso problema anche se con scopi diversi.
Come fare in modo tale che all'installazione dell'app si crei in automatico una cartella nella sdcard contenente delle immagini?
tinyDB per effettuare l'operazione solo la prima volta e poi?
la seconda immagine la carichi come media da design editor, non c'è bisogno di usarla subito ma sarà a disposizione della tua app quando ne avrai necessità.
Eliminasupponiamo che carichi due immagini
button1_normal e button1_pushed
poi da blocks editor all'evento click cambi l'immagine del button1 in button1_pushed (meglio ancora usare un clock che dopo diciamo 0,5s riporta l'immagine a button1_normal in modo da simulare graficamente il comportamento dei pulsanti di default)se hai problemi scrivimi per mail e vedo di aiutarti,ciao
sto ricreando un'app telefono con delle particolarità, avrei bisogno di due immagini per ogni tasto, sinceramente non ho capito come caricare delle immagini invisibili da richiamare sul tasto, l'unica soluzione che ho trovato è crearmi a priori una cartella di tali immagini sulla sdcard, sono fuori strada?
RispondiEliminaGraziee
ok ok Media in basso a destra, mi ero fissato con Media in alto a sinistra in Palette subito dopo Basic.
RispondiEliminaGrazieeeee
esatto! ci eravamo capiti male! ottimo che hai risolto! ciao
Eliminaciao, non so se è il caso di iniziare a studiare un po' di codice (ho basi di pascal e basic anno '80, stavo ricostruendo un telefono ma è possibile che devo fare un "When button click" per ogni tasto? Ogni tasto X1..Xn deve vibrare se pigiato e cambiare immagine per 0,3sec in XX1..XXn oltre, ovviamente a scrivere 1..n nell'apposita casella.
RispondiEliminaPossibile che non ci sia una soluzione globale e debba programmare un tasto alla volta? Purtroppo il "When Anybutton click" non esiste.
Con il codice si poteva ovviare? (E' solo una curiosità al momento).
Graziee.
Con il codice si hanno a disposizione molti più' template e anche la possibilità' di avere immagini diverse per pulsante on/off purtroppo con ai questo non s' possibile e bisogna fare come hai detto te!se hai molti pulsanti la cosa diventa lunga e faticosa...
Eliminaciao, mi trovo alle prime armi e sto cercando di realizzare (grazie alle tue guide) un'applicazione per una radio in stream. Sono riuscito a caricare un'immagine che rappresenta bottone di play che una volta premuto attiva lo stream e commuta l'immagine in quella di stop. Ora dovrei fare il contrario, cioè cliccando su stop interrompere lo stream e commutare nuovamente su play. E qui sto in alto mare :)
RispondiEliminaGrazie per il tuo aiuto
Giuseppe
Ciao Seba una domanda sui bottoni: ho fatto un'app dove c'è uno screen iniziale con due bottoni. Lo screen e scrollabile e quando scrollo, i bottoni mi spariscono giustamente. C'è una possibilità di mantenerli fermi nella posizione mentre la pagina scrolla?
RispondiEliminaGrazie
Angelo V.
Ciao Angelo,non credo sia possibile, mettendo a scrollable lo schermo in pratica hai uno schermo di altezza "illimitata" i bottoni sono posizionati a delle coordinate y che restano fisse rispetto alla parte superiore dello schermo, potresti provare cambiandoci la posizione man mano che l'utente trascina verso il basso lo schermo ma onestamente non so con quale componente potresti leggere la posizione attuale dello schermo, se mi viene qualche idea ti faccio sapere ciao
EliminaCiao Sebastiano e complimenti per i tutorial.i questo tutorial non ho capito bene a cosa serve la definizione opzione scelta.potresti spiegarmelo?non ho ben chiaro il concetto di definizione in app inventor.
RispondiEliminaVolevo dire di definizione variabile, non ho ben capito a cosa servono le variabilj e come si usano.
RispondiEliminail concetto di "variabile" è comune a tutti i linguaggi di programmazione, App Inventor non fa eccezione, ti consiglio di leggere la definizione di wikipedia ad esempio
Eliminahttp://it.wikipedia.org/wiki/Variabile_(informatica)
a grandi linee comunque è un elemento del programma che può assumere un valore preciso e viene utilizzato all'interno della logica del programma per ottenere un risultato.
Ad esempio se imposti la variabile "punteggio" in un gioco, questa all'inizio magari ha valore 0, poi man mano che il giocatore realizza i punti, il programma incrementa questa variabile per contenere appunto il valore del punteggio corrente del gioco.
Spero di averti un pò chiarito le idee :)
grazie mille!mi hai chiarito le idee! :):)
RispondiEliminaCiao Seba,da poco ho trovato casualmente i tuoi tutorial su youtube...devo dire che sei un grande,sopratutto per come mandi avanti i tuoi progetti.
RispondiEliminaVorrei chiederti se dopo aver creato i due pulsanti,posso inserire una WebView. Mi spiego meglio: clicco su pulsante 1,voglio che nella stessa pagina,si apra sotto nella WebView la pagina contenente la webcam della mia città. Vorrei sapere se si può fare e come?? Scusami se chiedo un pò troppooo
Certo che si può fare, è molto semplice basta che alla pressione del pulsante programmi il caricamento della pagina con l'url della webcam nella webviewer.
EliminaImposti il valore della webviewer url e poi dai la gotourl.
Ti consiglio di guardare il tutorial sull'utilizzo della webviewer che trovi in elenco tutorial, così sarà ancora più chiaro, ciao
Ciao, sto creando una app (con ai2) che tramite dei pulsanti (avanti/dietro) mi scorre delle date. Esiste in ai classic o ai2 un controllo che permette di evitare l' uso dei pulsanti, strisciando verso sinistra o destra con il dito sullo schermo, come normalmente si fa usando un tablet o smartphone?
RispondiEliminaNon mi sembra di aver trovato nulla a riguardo.
Grazie,
Francesco
Ho trovato uno stratagemma. Ho inserito nella zona inferiore dello schermo un canvas e con l'evento DRAGGED vado a verificare i valori della x iniziale (coord. X del "primo" tocco) e x finale (coord. X dell'ultimo tocco, cioè quello appena prima a quando il dito lascia lo schermo).
EliminaSe la x iniziale > della x finale allora la direzione del dito è verso sinistra; altrimenti la direzione del dito è verso destra
Grazie Francesco, ottimo suggerimento!
Eliminal'unico "problema" è che con i canvas bisogna lavorare di più per ridimensionarli alle differenti risoluzioni dello schermo dei vari smartphone tablet, cmq è una buona idea e può "simulare" bene lo slide per il cambio di schermata, se hai voglia potresti postare i blocchi che hai usato nel forum (crea una discussione apposita) :) penso che molti utenti te ne sarebbero grati!
OK, già fatto. Ho però postato un metodo diverso, usando l'evento FLUNG, perchè mi è sembrato più funzionale.
EliminaCiao Seba, è possibile cambiare anche la grafica dello slider? Se sì come?
RispondiEliminaGrazie! Sei bravissimo e gentilissimo!
Salve,
RispondiEliminaottimo tutorial,in una app ho bisogno di creare circa 100 button .
Esiste un copia incolla o devo crearli manualmente uno per uno???