CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: pumaro con ben 4 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 9 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 31 Thanks ricevuti nell'ultimo mese

Pagina 1 di 2 12 ultimoultimo
Ultima pagina
Visualizzazione dei risultati da 1 a 10 su 11
Discussione:

Semplice cronometro

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    Jul 2012
    Messaggi
    14

    Ringraziamenti
    4
    Ringraziato 0 volte in 0 Posts
    Predefinito

    [RISOLTO] Semplice cronometro

    Cari utenti,
    sono relativamente nuovo alla programmazione in Android ed ho già letto alcune guide con le quali sono riuscito a creare diverse applicazioni in Eclipse, a caricarle correttamente sul mio Samsung Galaxy Nexus e vederle correttamente funzionare. Riesco a creare pannelli, pulsanti, passare tra i vari pannelli con le activities ecc...

    Ora vi chiedo lumi per una funzione, che per i più esperti sarà di sicuro semplice, ma che io non ho trovato spulciando le varie guide (e ho girato parecchio!). Ho un solo semplicissimo pannello (pardon, una activity!) nel quale ho un solo bottone Button1 ed un campo testo Text1. Vorrei che alla pressione di Button1 partisse un cronometro tale che:

    1) in Text1 si deve vedere l'avanzare dei secondi;
    2) Dopo 30 secondi il colore di Button1 deve cambiare e si deve udire un "bip" o meglio un effetto sonoro memorizzato sotto forma di file audio da qualche parte.

    A chi riesce ad aiutarmi... Una statua d'oro verrà eretta in suo onore! Grazie in anticipo a tutti.
    Ultima modifica di Archimede76; 23-07-12 alle 18:23

  2.  
  3. #2
    Baby Droid


    Registrato dal
    Jul 2012
    Messaggi
    14

    Ringraziamenti
    4
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Spero di non aver postato un quesito troppo complesso, o di non aver violato qualche regola inserendo due domande nello stesso messaggio... Se così fosse vi prego di scusarmi!

  4. #3
    Senior Droid L'avatar di freebong


    Registrato dal
    Apr 2011
    Messaggi
    379

    Ringraziamenti
    13
    Ringraziato 28 volte in 27 Posts
    Predefinito

    Quote Originariamente inviato da Archimede76 Visualizza il messaggio
    Cari utenti,
    sono relativamente nuovo alla programmazione in Android ed ho già letto alcune guide con le quali sono riuscito a creare diverse applicazioni in Eclipse, a caricarle correttamente sul mio Samsung Galaxy Nexus e vederle correttamente funzionare. Riesco a creare pannelli, pulsanti, passare tra i vari pannelli con le activities ecc...

    Ora vi chiedo lumi per una funzione, che per i più esperti sarà di sicuro semplice, ma che io non ho trovato spulciando le varie guide (e ho girato parecchio!). Ho un solo semplicissimo pannello (pardon, una activity!) nel quale ho un solo bottone Button1 ed un campo testo Text1. Vorrei che alla pressione di Button1 partisse un cronometro tale che:

    1) in Text1 si deve vedere l'avanzare dei secondi;
    2) Dopo 30 secondi il colore di Button1 deve cambiare e si deve udire un "bip" o meglio un effetto sonoro memorizzato sotto forma di file audio da qualche parte.

    A chi riesce ad aiutarmi... Una statua d'oro verrà eretta in suo onore! Grazie in anticipo a tutti.
    Let me google that for you
    secondo risultato, da adattare alle tue esigenze logicamente

  5. #4
    Baby Droid


    Registrato dal
    Jul 2012
    Messaggi
    14

    Ringraziamenti
    4
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Grazie innanzitutto per avermi trattato pubblicamente da idiota (al lettore che si chiedesse il motivo, consiglio di cliccare sul link postato da Freebong), non essendo questa la sede ed essendo il rispetto del regolamento per me prioritario evito ogni replica e mi limito al quesito in sé. Evidentemente per alcuni utenti è questo il prezzo da pagare per aver chiesto un consiglio.

    La risposta gentilmente postata da Freebong era tra quelle che avevo scartato in quanto non mi aveva aiutato a risolvere il problema. Non vedendo poi altre risposte al mio quesito, ho cercato di arrangiarmi un pò creando il codice che vi indico sotto il quale tuttavia non risponde alle mie esigenze in quanto non produce alcun risultato. Ricordo che il mio fine sarebbe quello di creare un cronometro che al passare del tempo aggiorni una casella di testo.

    codice:
    public void onClick(View v) {
            	   
            	   //Stabilisco il tempo
            	   long inizio = new Date().getTime() / 1000;
            	   long intermedio = new Date().getTime() / 1000;
            	   TextView tvNome =  (TextView) findViewById(R.id.textView2);
            	   
            	   while (intermedio - inizio < 10000){
            		   intermedio = new Date().getTime() / 1000;
                               long trascorso = intermedio - inizio;
            		   tvNome.setText(String.Valueof(trascorso));
            		   hh++;
            	   }
            	   tvNome.setText("10 secondi trascorsi!");
               }
    Ma poi, dopo tanti tentativi durante tutto il giorno, ho capito forse che sbaglio il ciclo di while! Infatti costruendo una funzione molto più semplice che restituisca in quella casella prima "1" e poi "2", anche in questo caso la casella passa a 2 senza mostrare 1 nemmeno per un attimo! Ecco di seguito il codice.

    codice:
    public void onClick(View v) {	   
            	   int i = 0;
            	   while (i < 100000){
                               tvNome.setText("1");
            		   i++;
            	   }
            	   tvNome.setText("2");
            }
    Perciò prima di chiedervi lumi sul mio cronometro faccio un passo indietro e vi chiedo, come mai nel codice sopra indicato la casella non assume il valore 1 nemmeno per un istante e passa subito al valore 2? Grazie infinite.

  6. #5
    Androidiano


    Registrato dal
    Oct 2010
    Messaggi
    229

    Ringraziamenti
    27
    Ringraziato 77 volte in 35 Posts
    Predefinito

    Ciao, si, il link è poco elegante (e porta ad un risultato un po' diverso da quello che mi pare serva a te) peraltro è vero che internet è una grandissima risorsa, per cui cercate molto con google, e se cercate informazioni inerenti la programmazione, rispolverate e cercate in inglese che si trova molta più roba e ringraziate i vostri vecchi professori delle medie

    il tuo codice onClick, se è una funzione dell'activity ed invocata grazie ad android:onclick="onClick" viene eseguita nell'UI thread e quindi il programma viene aggiornato (graficamente) solo al termine della tua funzione e quindi quando hai fatto setText("2");

    Per creare un timer o comunque eseguire del codice aggiornando man mani l'interfaccia in java devi creare un thread separato.

    Alternativamente (per il solo problema del conuntdown timer) prova anche a guardare qui: CountDownTimer | Android Developers

    in bocca al lupo e ciao !
    Felice possessore di un LG O1 con GingerLOL 1.5.2 e di un Mediacom Smartpad 810c con Pistoneone 4.2.1 / 5.0 Samsung Galaxy Tab 10.1 P7510 (originale per ora) Mediacom Smartpad 715i (ROM smartpao 2.1), Mediacom Smartpad 842i (ROM smartpao 2.0)
    Mini-Forum-FAQ per Mediacom Smartpad 810c

  7. Il seguente Utente ha ringraziato pourquoipas per il post:

    Archimede76 (22-07-12)

  8. #6
    Senior Droid L'avatar di freebong


    Registrato dal
    Apr 2011
    Messaggi
    379

    Ringraziamenti
    13
    Ringraziato 28 volte in 27 Posts
    Predefinito

    Signori e signorine..
    il link porta ad un risultato molto attinente alla realizzazione di un cronometro mi sembra.. poi certo.. se pretendi qualcosa che sia proprio quello che vuoi tu stai fresco (inoltre non vedo lo scopo di fare un copia incolla senza nemmeno metterci un po le mani)
    Il "difficile" in quello che chiedevi tu non credevo fosse aggiornare una textview.. ma sviluppare il cronometro.. quindi.. armati di umiltà e non te la prendere..

  9. #7
    Baby Droid


    Registrato dal
    Jul 2012
    Messaggi
    14

    Ringraziamenti
    4
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Quote Originariamente inviato da pourquoipas Visualizza il messaggio
    Ciao, si, il link è poco elegante (e porta ad un risultato un po' diverso da quello che mi pare serva a te) peraltro è vero che internet è una grandissima risorsa, per cui cercate molto con google, e se cercate informazioni inerenti la programmazione, rispolverate e cercate in inglese che si trova molta più roba e ringraziate i vostri vecchi professori delle medie

    il tuo codice onClick, se è una funzione dell'activity ed invocata grazie ad android:onclick="onClick" viene eseguita nell'UI thread e quindi il programma viene aggiornato (graficamente) solo al termine della tua funzione e quindi quando hai fatto setText("2");

    Per creare un timer o comunque eseguire del codice aggiornando man mani l'interfaccia in java devi creare un thread separato.

    Alternativamente (per il solo problema del conuntdown timer) prova anche a guardare qui: CountDownTimer | Android Developers

    in bocca al lupo e ciao !
    Tralasciando toni provocatori o messaggi senza attinenza con quanto mi occorre, ringrazio l'utente pourquoipas; lui sì, che ha capito al volo il mio problema e con toni professionali e corretti mi ha risposto in modo mirato.

    Era esattamente quello che mi serviva, grazie infinite. Provato e riprovato, adattando alle mie esigenze. Avrei solo due dubbi, forse banali, per risolvere i quali ti posto alcuni frammenti di codice.

    1) Dato il codice sotto, come posso fare in modo che la funzione cronometro parta alla pressione del pulsante e non al caricamento del pannello? Spostando in blocco il codice del cronometro sotto quello del pulsante non vedo messaggi di errori formali, ma l'app si blocca.

    codice:
    final TextView tvNome =  (TextView) findViewById(R.id.textView2);
            new CountDownTimer (30000, 1000) {
    
                public void onTick(long millisUntilFinished) {
                	if (millisUntilFinished/1000 < 10){
                		tvNome.setText("seconds remaining: Ancora poco!");
                	}
                	else
                	{
                		tvNome.setText("seconds remaining: " + String.valueOf(millisUntilFinished));
                	}
                	
                }
    
                public void onFinish() {
                	tvNome.setText("done!");
                }
             }.start();
            
            
            final Button primo = (Button) findViewById(R.id.button1); 
            primo.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View v) {
            	   
            	  //Ecco, vorrei fare in modo che il cronometro parta con questo pulsante! 
            	  
               }
            });
    2) Ho capito che, affinché si realizzi il ciclo postato prima e che per comodità ti reinserisco sotto, la funzione va spostata sotto altra classe "altra.java" e va poi eventualmente richiamata nella classe della activity.java. Solo che ho qualche problema a "spiegare" alla classe "altra" che va modificata una casella di testo della activity. Come modificare il codice sotto, per fare in modo che modifichi la casella myCasella del pannello myActivity? Ho provato in diversi modi ma vedo sempre errore.

    codice:
    public void onClick(View v) {	   
            	   int i = 0;
            	   while (i < 100000){
                               //Ecco la riga incriminata!
                               //come richiamare un elemento che si trova in un'activity esterna? 
                               tvNome.setText("1");
            		   i++;
            	   }
    //Ecco la riga incriminata(2)!
    //come richiamare un elemento che si trova in un'activity esterna? 
    tvNome.setText("2");
            }
    Grazie ancora!

  10. #8
    Androidiani Power User L'avatar di Eska


    Registrato dal
    Jul 2009
    Messaggi
    880

    Ringraziamenti
    53
    Ringraziato 278 volte in 161 Posts
    Predefinito

    freebong sei pregato di non intervenire per creare flame, mi sembra palese che la tua prima risposta non dia nessun contributo ( per non parlare della seconda dove certamente non dai dimostrazione di umiltà ). L'utente Archimede76 chiedeva consiglio sull'implementazione di una parte del suo programma e tu hai linkato una ricerca su google di due parole generiche che difficilmente poteva essere d'aiuto.

  11. Il seguente Utente ha ringraziato Eska per il post:

    Archimede76 (23-07-12)

  12. #9
    Baby Droid


    Registrato dal
    Jul 2012
    Messaggi
    14

    Ringraziamenti
    4
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Grazie Eska, molto gentile; un thank anche a te per il tuo intervento e per le tue precisazioni quantomai opportune. Passiamo adesso a cose più importanti di qualche infantile e fanciullesca provocazione.

    Allora, proseguendo i miei tentativi che perdurano da diverse ore sono riuscito a implementare il cronometro che parte alla pressione di un pulsante. Come? Semplice (grazie ai consigli ed ai link letti di pourquoipas): ho creato una classe separata nella stessa classe dell'activity e ho poi istanziato questa ultima classe nell'evento onclick del pulsante. Funziona a meraviglia, lo indico ovemai fosse utile a qualcun altro.

    Altra buona notizia di un mio precedente dubbio, anch'essa qui da me condivisa sperando sia utile ad altri: per creare gli eventi in base al tempo trascorso ho utilizzato un semplice ciclo di if inglobato nella stessa classe prima descritta; se il tempo trascorso è superiore ad un certo valore, compare un banale avviso.

    Voglio ora arricchire il mio cronometro di un'altra funzione ma per rispettare il regolamento apro un secondo post visto che questo può considerarsi concluso. E' un piacere essere tra voi, in una comunità con moderatori così efficienti. Quesito risolto.

  13. #10
    Androidiani Power User L'avatar di nigno


    Registrato dal
    Jul 2010
    Località
    MB
    Messaggi
    7,976
    Smartphone
    N5

    Ringraziamenti
    65
    Ringraziato 1,071 volte in 840 Posts
    Predefinito

    Quote Originariamente inviato da freebong Visualizza il messaggio
    nn interverrò ulteriormente.. non voglio far piangere nessuno..
    post inutile..finiscila di inquinare inutilmente per favore..e scrivi senza abbreviazioni come da regolamento grazie
    Device: Sony Xperia Z3 - Rooted Stock Rom
    Device: LG G2 - Cloudy G3 Rom
    Device: Galaxy S2 GT-I9100 Black - Asnet Miui Rom

    Device: Galaxy S1 GT-I9000- Slim Rom
    Device: LG G Pad 8.3 - Rooted Stock Rom
    Device: -

    - Brabus Xclusive -


    Quando questo aggeggio toccherà le 88 miglia orarie ne vedremo delle belle, Marty.

Pagina 1 di 2 12 ultimoultimo
Ultima pagina

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy