Barra de progreso con divisor

¿Puede alguien por favor explicarme cómo implementar una barra de progreso con un divisor como su mostrado en la imagen de abajo?

introduzca la descripción de la imagen aquí

Para la barra de progreso estoy usando https://github.com/akexorcist/Android-RoundCornerProgressBar pero esto no parece tener una opción de divisor.

reemplazar ProgressDrawable de mi respuesta con el modificado:

 class ProgressDrawable extends Drawable { private static final int NUM_SEGMENTS = 4; private final int mForeground; private final int mBackground; private final Paint mPaint = new Paint(); private final RectF mSegment = new RectF(); public ProgressDrawable(int fgColor, int bgColor) { mForeground = fgColor; mBackground = bgColor; } @Override protected boolean onLevelChange(int level) { invalidateSelf(); return true; } @Override public void draw(Canvas canvas) { float level = getLevel() / 10000f; Rect b = getBounds(); float gapWidth = b.height() / 2f; float segmentWidth = (b.width() - (NUM_SEGMENTS - 1) * gapWidth) / NUM_SEGMENTS; mSegment.set(0, 0, segmentWidth, b.height()); mPaint.setColor(mForeground); for (int i = 0; i < NUM_SEGMENTS; i++) { float loLevel = i / (float) NUM_SEGMENTS; float hiLevel = (i + 1) / (float) NUM_SEGMENTS; if (loLevel <= level && level <= hiLevel) { float middle = mSegment.left + NUM_SEGMENTS * segmentWidth * (level - loLevel); canvas.drawRect(mSegment.left, mSegment.top, middle, mSegment.bottom, mPaint); mPaint.setColor(mBackground); canvas.drawRect(middle, mSegment.top, mSegment.right, mSegment.bottom, mPaint); } else { canvas.drawRect(mSegment, mPaint); } mSegment.offset(mSegment.width() + gapWidth, 0); } } @Override public void setAlpha(int alpha) { } @Override public void setColorFilter(ColorFilter cf) { } @Override public int getOpacity() { return PixelFormat.TRANSLUCENT; } } 

y crearlo así:

 Drawable d = new ProgressDrawable(0xdd00ff00, 0x4400ff00); 
 /** * Created by nagendra on 16/06/15. */ public class ProgressBarDrawable extends Drawable { private int parts = 10; private Paint paint = null; private int fillColor = Color.parseColor("#2D6EB9"); private int emptyColor = Color.parseColor("#233952"); private int separatorColor = Color.parseColor("#FFFFFF"); private RectF rectFill = null; private RectF rectEmpty = null; private List<RectF> separators = null; public ProgressBarDrawable(int parts) { this.parts = parts; this.paint = new Paint(Paint.ANTI_ALIAS_FLAG); this.separators = new ArrayList<RectF>(); } @Override protected boolean onLevelChange(int level) { invalidateSelf(); return true; } @Override public void draw(Canvas canvas) { // Calculate values Rect b = getBounds(); float width = b.width(); float height = b.height(); int spaceFilled = (int)(getLevel() * width / 10000); this.rectFill = new RectF(0, 0, spaceFilled, height); this.rectEmpty = new RectF(spaceFilled, 0, width, height); int spaceBetween = (int)(width / 100); int widthPart = (int)(width / this.parts - (int)(0.9 * spaceBetween)); int startX = widthPart; for (int i=0; i<this.parts - 1; i++) { this.separators.add( new RectF(startX, 0, startX + spaceBetween, height) ); startX += spaceBetween + widthPart; } // Foreground this.paint.setColor(this.fillColor); canvas.drawRect(this.rectFill, this.paint); // Background this.paint.setColor(this.emptyColor); canvas.drawRect(this.rectEmpty, this.paint); // Separator this.paint.setColor(this.separatorColor); for (RectF separator : this.separators) { canvas.drawRect(separator, this.paint); } } @Override public void setAlpha(int alpha) { } @Override public void setColorFilter(ColorFilter cf) { } @Override public int getOpacity() { return PixelFormat.TRANSLUCENT; } } 

en XM Layout

 <ProgressBar android:id="@+id/progress_bar_test" android:layout_width="match_parent" android:layout_height="wrap_content" style="?android:attr/progressBarStyleHorizontal" android:max="100" android:progress="10" android:layout_marginLeft="16dp" android:layout_marginRight="16dp" /> ProgressBar progressBar= (ProgressBar)findViewById(R.id.progress_bar_test); ProgressBarDrawable bgProgress= new ProgressBarDrawable(5); progressBar.setProgressDrawable(bgProgress); 
  • Cómo mostrar el estado de la barra de progreso en porcentaje
  • Cómo cambiar el color del círculo ProgressDialog predeterminado en android
  • ContentLoadingProgressBar nunca se muestra
  • Quite el relleno vertical de ProgressBar horizontal
  • Android: obtención de datos XML desde la Web (con AsyncTask) y problema relacionado con Progressbar
  • Android ProgressBar no se actualiza onProgress
  • ¿Cómo crear una barra de progreso de carga horizontal?
  • Uso práctico de ContentLoadingProgressBar
  • ¿Cómo crear un ProgressBar mediante programación?
  • Cómo personalizar una barra de progreso en Android
  • Cómo hacer progresbar circular con el estado de progreso en android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.