Android Circular Determinate ProgressBar

Quiero crear una ProgressBar Circluar Determinate, del tipo que muestra el Progreso en el centro del Bar. ¿Hay alguna forma predeterminada de crear esto, o tendré que crear mi propio modo personalizado?

Primero agregue un progress_circle.xml a su directorio res / drawable de la siguiente manera:

            

Busqué en la imagen de Google tanto “progress_particle.png” como “progress_circular_background.png” (con comillas) ya que faltaban los elementos predeterminados de Android para aquellos. Es probable que desee personalizarlos, pero lo harán para comenzar.

Luego en tu diseño xml:

  

Mi máximo es 60, ya que lo estoy usando para un temporizador de segundos, pero es posible que tenga algo diferente.

El truco es que necesitas usar style = “? Android: attr / progressBarStyleHorizontal” a pesar de que es un progreso circular.

He escrito un ejemplo detallado en la barra de progreso circular de Android aquí en mi blog demonuts.com. También puede incluir aquí el código fuente completo y la explicación.

Así es como hice la barra de progreso circular con porcentaje dentro del círculo en código puro sin ninguna biblioteca.

enter image description here

primero crea un archivo dibujable llamado circular.xml

                 

Ahora en su activity_main.xml agregue lo siguiente:

        

En activity_main.xml , he usado una imagen circular con fondo blanco para mostrar el fondo blanco en torno al porcentaje. Aquí está la imagen:

enter image description here

Puede cambiar el color de esta imagen para establecer el color personalizado alrededor del texto porcentual.

Ahora, finalmente, agregue el siguiente código a MainActivity.java :

 import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.animation.DecelerateInterpolator; import android.widget.ProgressBar; import android.widget.TextView; public class MainActivity extends AppCompatActivity { int pStatus = 0; private Handler handler = new Handler(); TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Resources res = getResources(); Drawable drawable = res.getDrawable(R.drawable.circular); final ProgressBar mProgress = (ProgressBar) findViewById(R.id.circularProgressbar); mProgress.setProgress(0); // Main Progress mProgress.setSecondaryProgress(100); // Secondary Progress mProgress.setMax(100); // Maximum Progress mProgress.setProgressDrawable(drawable); /* ObjectAnimator animation = ObjectAnimator.ofInt(mProgress, "progress", 0, 100); animation.setDuration(50000); animation.setInterpolator(new DecelerateInterpolator()); animation.start();*/ tv = (TextView) findViewById(R.id.tv); new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub while (pStatus < 100) { pStatus += 1; handler.post(new Runnable() { @Override public void run() { // TODO Auto-generated method stub mProgress.setProgress(pStatus); tv.setText(pStatus + "%"); } }); try { // Sleep for 200 milliseconds. // Just to display the progress slowly Thread.sleep(8); //thread will take approx 1.5 seconds to finish } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); } } 

Si quiere hacer una barra de progreso horizontal, siga este enlace, tiene muchos ejemplos valiosos con el código fuente:
http://www.skholingua.com/android-basic/user-interface/form-widgets/progressbar