2013-08-29 9 views
5

Sto facendo per la rotellina di avanzamento circolare personalizzata. ecco di cosa ho bisogno, una volta che la ruota del progresso finirà il progresso al cento per cento. poi, quando scatto di nuovo, ho bisogno di cambiare il colore progredire in fase di esecuzione ...Cambio colore in Custom Progress Wheel in runtime in Android a livello di programmazione

Ho scaricato il codice da questo link .. https://github.com/Todd-Davies/ProgressWheel

nota: clicco su un pulsante, il progresso inizia progredire. quel cerchio della barra di avanzamento ha già un colore. Dopo il completamento completo al 100%, voglio ricominciare da capo, quella volta, ho bisogno di cambiare il colore per essere rosso runtamente ...

Ho provato anche questo collegamento .. questo collegamento è per avere per barra di avanzamento predefinita . ma, io sto usando per il progresso personalizzato bar.thats perché, non posso usato questo metodo come ... http://myandroidsolutions.blogspot.in/2012/11/android-change-indeterminate-progress.html http://www.tiemenschut.com/how-to-customize-android-progress-bars/

qualcuno può aiutarmi a completare questa operazione .. Grazie anticipo ....

il mio codice: onCreate metodo:

increment.setOnClickListener(new OnClickListener() { 
@SuppressLint("WrongCall") 
public void onClick(View v) { 
Log.v("test", "-----increment button clicked--------"); 
if(!running) { 
progress1 = (int) 370 ; 
Thread s = new Thread(r); 
s.start(); 
} 
} 
}); 

final Runnable r = new Runnable() { 
     @SuppressLint("WrongCall") 
     public void run() { 
      //Log.v("test", "----- thread called--------"); 
      running = true; 
      //Log.v("test", "progress:"+progress); 
      //Log.v("test", "progress1:"+progress1); 
      progress2 = progress - progress1 ; 
          //progress = 360 , progress1 = uservalue 
      Log.v("test", "progress:"+progress); 
      Log.v("test", "progress1:"+progress1); 
      Log.v("test", "progress2 = progress - progress1:"+progress2); 
      //percentage = pw_two.incrementProgress(); 
      // pw_two.setBarColor(Color.parseColor("#FF0000")); 

      while(progress2<360) {  
      percentage = pw_two.incrementProgress(); 
      Log.v("test","percentage:"+percentage); 
       progress2++; 
       try { 
        Thread.sleep(15); 
       } catch (InterruptedException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 



// here when crossing 360 above , then color change effect needed.. 
//why we using this function, when put ten minutes for break, 
    who taking more than ten minutes,, 
// then that time itself, need to change color.. 
    i finish that time calculation.... 
       if(progress2 > 359) { 
// here.. need to call this method two times.. then only, wheel will be refreshed...... 
        //onPause_Reset_ProgressWheelOne(); 
        onPause_Reset_ProgressWheelOne(); 
        //break; 
       } 
      } 

      running = false; 
     } 
    }; 

    public void onPause_Reset_ProgressWheelOne() { 

    Log.v("test", "onPause_Reset_ProgressWheelOne--------"); 

    progress = 360; 
    pw_two.setRimColor(Color.parseColor("#fe854c")); //1988c4 //fe854c 
    pw_two.setBarColor(Color.RED); 
    //pw_two.resetCount(); 
    pw_two.refreshWheel(); 
    // progress = 0; 
    // pw_two.setProgress(0); 

    } 

ProgressWheel.java CLass : 

    public void refreshWheel() { 

    setupPaints(); 
} 
+0

Ciao, potresti dirmi come fai riferimento a questa libreria nel tuo progetto? Hai impostato questo progetto ProgressBar come libreria e lo hai fatto riferimento nel tuo progetto in questo modo? –

+0

Ciao, non ho incluso come libreria. copio semplicemente quei file di classe nelle mie cartelle di progetto esistenti. e lo ha usato .. lo stesso per i file xml per il layout, dove mai vuoi .. – harikrishnan

risposta

7

All'interno ProgressWheel.java (com.todddavies.components.progressbar.ProgressWheel), aggiungere un metodo:

012.351.641,061 mila

Ho fatto clic su un pulsante, il progresso inizia a procedere. quel cerchio della barra di avanzamento ha già un colore. Dopo i progressi completare al 100%, lo voglio per iniziare di nuovo, che il tempo, ho bisogno di cambiare il colore ad essere rosso runtimely

Quando è necessario cambiare il colore:

// Progress is 100% 
if (progress == 360) { 

    // Change the color 
    mProgressWheel.setBarColor(Color.RED); 

    // Refresh 
    mProgressWheel.refreshTheWheel(); 

    // Reset progress 
    progress = 0; 
    mProgressWheel.setProgress(0); 

    // You can also use: 
    // mProgressWheel.resetCount(); 
} 

Nota: Assicurati che la modifica/aggiunta a questa libreria sia consentita.

Edit:

vedere se le seguenti modifiche si ottiene il risultato desiderato:

dichiarare le variabili globali:

// `progress` isn't needed 
// int progress = 360; 
int progress1 = 0; 
int progress2 = 0; 

.... 
.... 

increment.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 

     Log.v("test", "-----increment button clicked--------"); 

     if(!running) { 

      // I am not sure what you are using `progress1` for 
      // progress1 = (int) 370 ; 

      progress1 = 0; 
      progress2 = 0; 

      // reset `pw_two` 
      pw_two.resetCount(); 

      Thread s = new Thread(r); 
      s.start(); 
     } 
    } 
});  

Ora, il Runnable:

final Runnable r = new Runnable() { 
    public void run() { 
     running = true; 

     // I could not figure out why you are using this 
     // Can you explain what this does? 
     // progress2 = progress - progress1 ; 

     while(progress2 < 361) { 
      pw_two.incrementProgress(); 

      // Increment both `progress1` and `progress2` 
      progress2++; 
      progress1++;   

      try { 
       Thread.sleep(15); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 

      // Here, reset `progress2`, but not `progress1` 
      if (progress2 == 360) { 
       pw_two.setRimColor(Color.parseColor("#fe854c")); //1988c4 //fe854c 
       pw_two.setBarColor(Color.RED); 
       pw_two.refreshWheel(); 
       progress2 = 0; 
       pw_two.setProgress(0); 

       // Log value of `progress1` 
       Log.v("Progress 1", "progress1 is " + progress1); 
      } 
     } 
     running = false; 
    } 
}; 

Tu fai n Non è necessario chiamare un altro metodo. A progressValue = 360, il colore cambierà. Se in qualche modo ho frainteso ciò che stai cercando di ottenere, potresti spiegare con alcuni casi d'uso?

+0

grazie per la risposta .. funziona bene, ma, ho bisogno di chiamare il metodo refreshwheel per due volte .. quindi solo il suo funzionamento .. – harikrishnan

+0

ma, ora ho un problema, ho bisogno di cambiare il colore quando continuamente dopo aver raggiunto 360. Non voglio fare clic su again.prev colore di sfondo è lo stesso. Quanta percentuale ha superato sopra 360, quello stato solo bisogno di cambiare il nuovo colore .. – harikrishnan

+0

@harikrishnan Siete i benvenuti. Puoi pubblicare il codice della tua attività nella domanda sopra? Ho provato questo dalla mia parte e funzionava bene. In effetti, non ho nemmeno implementato la funzionalità 'onClick()'. Ho semplicemente avviato 'ProgressWheel' una volta, e immediatamente dopo aver superato' 100% ', il colore è diventato rosso. Uno sguardo al tuo codice mi darà un'idea migliore di cosa sta succedendo. – Vikram

1

Controllare l'esempio this, ha una barra di avanzamento circolare che cambia colore quando aumenta il progresso.