2012-06-07 10 views
7

Ich baue eine Android-Anwendung und ich möchte sehr gerne einen Fortschrittsbalken schaffen, was am unteren Rand des MIUI ExplorerDie beste Methode zum Erstellen einer segmentierten Fortschrittsleiste?

Datei zu sehen ist MIUI File Explorer App

Es gibt keine völlig offensichtliche Lösung ist, so weit wie möglich sagen. Bisher, was ich denken kann, ist

  • viele Fortschrittsbalken mit transparentem Hintergrund oben auf einander
  • Erweitere Fortschrittsbalken Klasse mehrere Werte zu übernehmen Layering und schreiben Sie die OnDraw-Methode

Ich denke, die erste Option wäre viel zu langsam und ineffizient, aber die zweite Option könnte zu komplex sein, ist aber definitiv die bessere Lösung.

Gibt es einen besseren Weg?

Antwort

6

sollten Sie eine benutzerdefinierte Ansicht dafür machen. Beispiel:

final Paint blue = new Paint(); 
blue.setColor(Color.BLUE); 

View progressBar = new View(getActivity()){ 

     protected void onDraw(android.graphics.Canvas canvas) { 

      canvas.drawRect(0,0,getWidth()*progressPecentFirst,getHeight(),blue); 
      blue.setColor(Color.RED); 
      canvas.drawRect(0,0,getWidth()*progressPecentSecond,getHeight(),blue); 
      //Repeat this 
     }; 
    }; 
parentLayout.addView(progressBar); 
1

Eine Möglichkeit wäre es, es nicht zu einem traditionellen Fortschrittsbalken überhaupt zu machen. In einer meiner persönlichen Apps benötigte ich eine Anzeige, die einem kreisförmigen Fortschrittsbalken ähnlich war, der Segmente mit unterschiedlichen Farben hatte.

Könnte ich vorschlagen, beginnen Sie mit dem Zeichnen eines gefüllten Rechtecks ​​von 0B bis 14,9GB in der Farbe für Musik, von 939MB bis 14,9GB in der Farbe für Videos, von 3,52GB bis 14,9GB in der Farbe für Bilder und so auf.

Sie können dann nur die abgerundeten Enden in der Hintergrundfarbe als Maske zeichnen.

Das wäre ziemlich schnell, da Sie nur Grafikprimitive zeichnen und es beliebig erweitern können.

Der einzige kleine Nachteil wäre, dass Sie viel von der Logik selbst implementieren müssen, aber das ist ein kleiner Preis, der meiner Meinung nach zu zahlen ist.

-1

Sehr geehrte Bitte sehen Sie sich das Build in Beispiel API Demo von Android SKD 2.2 in api Demo zur Ansicht gehen -> Fortschrittsbalken -> schrittweise dann sehen Sie die Lösung von Ihnen Problem.

+0

Die Standard-Fortschrittsbalken auf 2 Segmente streng begrenzt. –

0

Hier ist der segmentierte Fortschrittsbalken basierend auf der Antwort @Zelleriation. Die Fortschrittsleiste.

SegmentedProgressBar progressBar = (SegmentedProgressBar) findViewById(R.id.segmentedProgressBar); 
    progressBar.setProgressColor(Color.BLACK); 
    progressBar.publishProgress(0.5f); 

    <com.muneikh.SegmentedProgressBar 
    android:id="@+id/segmentedProgressBar" 
    android:layout_width="match_parent" /> 

https://github.com/muneikh/SegmentedProgressBar

enter image description here

+0

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz zur Verfügung zu stellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - [Aus Bewertung] (/ review/low-quality-posts/11036312) –

+0

@JohnHascall Danke für die Hervorhebung. Ich habe die Antwort aktualisiert, um die wesentlichen Informationen aufzunehmen. – muneikh

Verwandte Themen