2013-08-29 8 views
5

Ich mache für benutzerdefinierte kreisförmige Fortschrittsrad. Hier, was ich brauche, sobald das Fortschrittsrad den hundertprozentigen Fortschritt beendet hat. dann, wenn ich noch einmal auf, ich brauche die fortschreitende Farbe zur Laufzeit ändern ...Farbwechsel in Custom Progress Wheel zur Laufzeit in Android programmgesteuert

I-Code von diesem Link heruntergeladen .. https://github.com/Todd-Davies/ProgressWheel

Anmerkung: Ich auf eine Schaltfläche klicken, wird der Fortschritt voran beginnt. Dieser Fortschrittsbalken hat bereits eine Farbe. Nachdem der Fortschritt 100% abgeschlossen ist, möchte ich es wieder zu starten, diese Zeit, ich muss die Farbe rot dauernd ändern ...

Ich versuchte diesen Link auch .. Dieser Link ist für Standard-Fortschrittsbalken . aber, i für individuelle Fortschritte sind mit bar.thats, warum ich diese Methode verwendet kippe wie ... http://myandroidsolutions.blogspot.in/2012/11/android-change-indeterminate-progress.html http://www.tiemenschut.com/how-to-customize-android-progress-bars/

kann mir jemand helfen, diese Aufgabe abzuschließen .. Dank Voraus ....

mein Code: onCreate Methode:

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

Hallo, können Sie mir sagen, wie Sie diese Bibliothek in Ihrem Projekt referenzieren? Haben Sie dieses ProgressBar-Projekt als Bibliothek festgelegt und verweisen Sie in Ihrem Projekt darauf? –

+0

Hallo, ich habe nicht als eine Bibliothek aufgenommen. Ich kopiere diese Klassendateien einfach in meine vorhandenen Projektordner. und verwendet es .. das gleiche für XML-Dateien zum Layout, wo immer Sie wollen .. – harikrishnan

Antwort

7

Innen ProgressWheel.java (com.todddavies.components.progressbar.ProgressWheel), eine Methode hinzufügen:

public void refreshTheWheel() { 

    setupPaints(); 

} 

Ich klicke auf eine Schaltfläche, der Fortschritt beginnt sich zu entwickeln. Dieser Fortschrittsbalken hat bereits eine Farbe. Nach dem Fortschritt 100% abgeschlossen ist, ich mag es noch einmal starten, dass die Zeit, ich brauche die Farbe zu ändern, rot sein runtimely

Wenn Sie benötigen die Farbe zu ändern:

// 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(); 
} 

Hinweis: Bitte stellen Sie sicher, dass das Bearbeiten/Hinzufügen zu dieser Bibliothek erlaubt ist.

Edit:

Prüfen Sie, ob die folgenden Änderungen, die Sie die gewünschte Ausgabe zu erhalten:

Deklarieren globale Variablen:

// `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(); 
     } 
    } 
});  

nun die 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; 
    } 
}; 

Du machst n ot müssen eine andere Methode aufrufen. Bei progressValue = 360 wird die Farbe wechseln. Wenn ich irgendwie missverstanden habe, was Sie erreichen wollen, könnten Sie das mit einigen Anwendungsfällen erklären?

+0

danke für reply..its arbeiten gut, aber muss ich für zwei Mal die refreshwheel Methode aufrufen .. dann nur seine Arbeits .. – harikrishnan

+0

aber jetzt ein Problem, das ich habe, ich brauche die Farbe zu ändern, wenn nach kontinuierlich erreicht 360. Ich möchte nicht noch einmal klicken. Prev Hintergrundfarbe ist gleich. wieviel Prozentsatz über 360 gekreuzt, muß dieser Zustand nur die neue Farbe ändern .. – harikrishnan

+0

@harikrishnan Sie sind willkommen. Können Sie den Code Ihrer Aktivität in der obigen Frage posten? Ich habe das an meinem Ende versucht und es hat gut funktioniert. Tatsächlich habe ich nicht einmal die 'onClick()' Funktionalität implementiert. Ich habe einfach einmal das 'ProgressWheel' gestartet und sofort nachdem es' 100 %' gekreuzt hatte, wechselte die Farbe zu Rot. Ein Blick auf Ihren Code gibt mir eine bessere Vorstellung von dem, was vor sich geht. – Vikram

1

Überprüfen Sie this Beispiel, es hat eine kreisförmige Fortschrittsbalken, die Farbe ändern, wenn der Fortschritt erhöht.

Verwandte Themen