2012-06-07 12 views
7

Estoy construyendo una aplicación para Android y yo quiero crear una barra de progreso muy parecido a lo que se ve en la parte inferior de la MIUI Explorador de archivos¿La mejor manera de crear una barra de progreso segmentada?

MIUI File Explorer App

No hay una solución completamente obvio por lo que puede contar. Hasta ahora lo que puedo pensar es

  • Capas muchas barras de progreso con fondo transparente en la parte superior de uno al otro
  • extender la clase barra de progreso para tener múltiples valores y reescribir el método onDraw

Creo que la primera opción sería demasiado lenta e ineficiente, pero la segunda opción podría ser demasiado compleja, pero definitivamente es la mejor solución.

¿Hay alguna forma mejor de solucionar esto?

Respuesta

6

debe hacer una vista personalizada para él. Ejemplo:

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

Una opción sería no convertirla en una barra de progreso tradicional. En una de mis aplicaciones personales necesitaba una pantalla similar a una barra de progreso circular que tenía segmentos de diferentes colores.

Podría sugerirte que comiences dibujando un rectángulo relleno de 0B a 14.9GB en el color para música, de 939MB a 14.9GB en el color para Videos, de 3.52GB a 14.9GB en el color para imágenes, y así en.

A continuación, puede dibujar los extremos redondeados en el color de fondo como una máscara.

Esto sería bastante rápido ya que solo está dibujando gráficos primitivos y puede extenderlo tanto como desee.

El único pequeño inconveniente sería que tendría que implementar mucha lógica usted mismo, pero ese es un pequeño precio a pagar en mi opinión.

-1

Estimado Por favor, consulte la compilación en el ejemplo API Demo de Android SKD 2.2 en la demo de API vaya a ver -> barra de progreso -> incremental, entonces verá la solución a su problema.

+0

La barra de progreso estándar se limita estrictamente a 2 segmentos. –

0

Aquí está la barra de progreso segmentada basada en la respuesta de @Zelleriation. La barra de progreso.

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

Si bien este enlace puede responder la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. - [De la crítica] (/ crítica/mensajes de baja calidad/11036312) –

+0

@JohnHascall Gracias por destacarlo. He actualizado la respuesta para incluir la información esencial. – muneikh

Cuestiones relacionadas