Ritardare una azione come la comparsa di un pulsante

di il
3 risposte

Ritardare una azione come la comparsa di un pulsante

Buongiorno,
sono alla ricerca di un metodo che, dopo aver premuto un pulsante, ritardi la sequenza delle azioni per la comparsa di un pulsante e la modifica di un testo.
Il problema, fondamentalmente, è che ho un audio che dura 3 secondi e vorrei che solo al termine dell'esecuzione dell'audio, compaia appunto un pulsante ed una scritta.
Come posso fare?
Per essere più chiari vi posto il codice
Btn_Via.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            
            Suono.start();
           		//Attendere che finisca la riproduzione del suono che dura 3 secondi
           		
           		
            		//Azioni da svolgere dopo l'attesa
            Btn_TornaHome.setVisibility(View.VISIBLE);
            Txt_Testo.setText("Ritardo eseguito");}
                        //Azioni da svolgere dopo l'attesa
  });
Onde farvi perdere tempo, vi posto anche il codice di un'altro esempio che avevo provato con Thread.sleep ma che comunque non funziona, l'unico risultato che ho avuto è che ritarda le azioni dopo aver premuto il pulsante ma le esegue comunque contemporaneamente
        BTVia.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            
            	//Prima azione
                PrimoTXT.setText("Azione partita");

		//attendere N secondi prima di eseguire le altre due azioni	
                try {
                    Thread.sleep(2500);
                    SecondoTXT.setText("Azione dopo theread.sleep");
                    Secondo.setVisibility(View.VISIBLE);


                } catch (InterruptedException e) {
                    e.printStackTrace();}
            }
        });

Grazie mille per la vostra collaborazione

3 Risposte

  • Re: Ritardare una azione come la comparsa di un pulsante

    Https://developer.android.com/reference/android/os/Handler
    
    new Handler().postDelayed(new Runnable() {
    
        @Override
        public void run() {
            // Hide your View after 3 seconds
            Btn_TornaHome.setVisibility(View.VISIBLE);
            Txt_Testo.setText("Ritardo eseguito");
        }
    }, 2500);
    
    
  • Re: Ritardare una azione come la comparsa di un pulsante

    Per fare quello che ti serve io utilizzerei :
    definisci il pulsante alla chiamata del fragment/activity come private
    nella grafica ( xml ) lascia il pulsante con visibility GONE
    quando ti servirà di farlo apparire usa VISIBLE, HalJordan te lo ha già mostrato ...

    new Handler().postDelayed(new Runnable() {

    @Override
    public void run() {
    // Hide your View after 3 seconds
    Btn_TornaHome.setVisibility(View.VISIBLE);
    Txt_Testo.setText("Ritardo eseguito");
    }
    }, 2500);

    l'ultimo valore 2500 sono 2,5 secondi e non 3 ... il valore è espresso in millisecondi ...


    il codice .. è un pò antiquato ... puoi utilizzare la semplificazione ( Lambda )
    Btn_Via.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

    Suono.start();
    //Attendere che finisca la riproduzione del suono che dura 3 secondi


    //Azioni da svolgere dopo l'attesa
    Btn_TornaHome.setVisibility(View.VISIBLE);
    Txt_Testo.setText("Ritardo eseguito");}
    //Azioni da svolgere dopo l'attesa
    });

    Diventa :

    Btn_Via.setOnClickListener( -> view {
    Suono.start();
    //Attendere che finisca la riproduzione del suono che dura 3 secondi
    //Azioni da svolgere dopo l'attesa
    Btn_TornaHome.setVisibility(View.VISIBLE);
    Txt_Testo.setText("Ritardo eseguito");
    //Azioni da svolgere dopo l'attesa
    });

    Divertiti.
  • Re: Ritardare una azione come la comparsa di un pulsante

    Perfetto, grazie mille
Devi accedere o registrarti per scrivere nel forum
3 risposte