studio progressbar personalizar indeterminate color bar android progress-bar

android - progressbar - ¿Cómo cambiar el color en la barra de progreso circular?



progress dialog android (14)

Estoy usando una barra de progreso circular en Android. Deseo cambiar el color de esto estoy usando

"?android:attr/progressBarStyleLargeInverse"

estilo. Entonces, ¿cómo cambiar el color de la barra de progreso?

¿Cómo personalizar el estilo? Además, ¿cuál es la definición del estilo?

Gracias por adelantado.


1.Primero crea un archivo xml en una carpeta dibujable debajo del recurso

llamado "progress.xml"

<?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:fromDegrees="0" android:pivotX="50%" android:pivotY="50%" android:toDegrees="360" > <shape android:innerRadiusRatio="3" android:shape="ring" android:thicknessRatio="8" android:useLevel="false" > <size android:height="76dip" android:width="76dip" /> <gradient android:angle="0" android:endColor="color/pink" android:startColor="@android:color/transparent" android:type="sweep" android:useLevel="false" /> </shape> </rotate>

2. luego haga una barra de progreso usando el siguiente fragmento

<ProgressBar style="?android:attr/progressBarStyleLarge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/relativeLayout1" android:layout_centerHorizontal="true" android:layout_marginBottom="20dp" android:indeterminate="true" android:indeterminateDrawable="@drawable/progress" />


Añada a su tema de actividad, elemento colorControlActivated , por ejemplo:

<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar"> ... <item name="colorControlActivated">@color/rocket_black</item> ... </style>

Aplica este estilo a tu actividad en el manifiesto:

<activity android:name=".packege.YourActivity" android:theme="@style/AppTheme.NoActionBar"/>


Cree una carpeta xml en el directorio res y coloque el archivo progress.xml en ella.

progress.xml

<?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="0" android:toDegrees="360"> <shape android:shape="ring" android:innerRadiusRatio="3" android:thicknessRatio="8" android:useLevel="false"> <size android:width="76dip" android:height="76dip" /> <gradient android:type="sweep" android:useLevel="false" android:startColor="#447a29" android:endColor="#447a29" android:angle="0" /> </shape> </rotate>

Establezca startColor y endColor según su elección.

Ahora establece ese progress.xml en el backgound de ProgressBar .

Me gusta esto

<ProgressBar android:id="@+id/ProgressBar01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:indeterminateDrawable="@drawable/widget_progressbar" />


Eso es trabajo para mí.

<ProgressBar android:id="@+id/ProgressBar01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:indeterminateTint="@color/black"/>


Para API 21 y superior. Simplemente configure la propiedad indeterminateTint. Me gusta:

android:indeterminateTint="@android:color/holo_orange_dark"

Para admitir dispositivos pre API 21:

mProgressSpin.getIndeterminateDrawable() .setColorFilter(ContextCompat.getColor(this, R.color.colorPrimary), PorterDuff.Mode.SRC_IN );


Para agregar a la respuesta de Dato, encuentro que SRC_ATOP es un filtro preferible para multiplicar, ya que es mejor que admita el canal alfa.

ProgressBar v = (ProgressBar) findViewById(R.id.progress); v.getIndeterminateDrawable().setColorFilter(0xFFcc0000, android.graphics.PorterDuff.Mode.SRC_ATOP);


Para personalizar ProgressBar circular, necesitamos crear un dibujo indeterminado para mostrar la barra de progreso personalizada

<?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:fromDegrees="0" android:pivotX="50%" android:pivotY="50%" android:duration="1"> <shape android:innerRadiusRatio="3" android:shape="ring" android:thicknessRatio="8" android:useLevel="false"> <size android:height="48dip" android:width="48dip" /> <gradient android:centerColor="#f96047" android:centerY="0.50" android:endColor="#fb9c8d" android:startColor="#f72d0c" android:type="sweep" android:useLevel="false" /> </shape> </rotate>

Necesitamos incluir drawable en la barra de progreso tal como se muestra a continuación:

<ProgressBar android:layout_width="wrap_content" android:layout_centerInParent="true" style="?android:attr/progressBarStyleLarge" android:visibility="visible" android:progressDrawable="@drawable/widget_progressbar" android:indeterminateDrawable="@drawable/widget_progressbar" android:layout_height="wrap_content" />


Para todos aquellos que se preguntan cómo aumentar la velocidad del progreso personalizado

<?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="0" android:toDegrees="1080"><!--HERE YOU COULD INCREASE SPEED BY SETTING TODEGRESS(1080 is 3 loops instead of 1 in same amt of time)--> <shape android:shape="ring" android:innerRadiusRatio="3" android:thicknessRatio="8" android:useLevel="false"> <size android:width="76dip" android:height="76dip" /> <gradient android:type="sweep" android:useLevel="false" android:startColor="#447a29" android:endColor="#447a29" android:angle="0" /> </shape>


Puede cambiar el color programáticamente usando este código:

ProgressBar v = (ProgressBar) findViewById(R.id.progress); v.getIndeterminateDrawable().setColorFilter(0xFFcc0000, android.graphics.PorterDuff.Mode.MULTIPLY);

Si desea cambiar el color de la barra de progreso de ProgressDialog, puede usar esto:

mDilog.setOnShowListener(new OnShowListener() { @Override public void onShow(DialogInterface dialog) { ProgressBar v = (ProgressBar)mDilog.findViewById(android.R.id.progress); v.getIndeterminateDrawable().setColorFilter(0xFFcc0000, android.graphics.PorterDuff.Mode.MULTIPLY); } });


Puede hacerlo con un diálogo personalizado con bastante facilidad, reutilizando el xml de otras respuestas:

<?xml version="1.0" encoding="utf-8"?>

<shape android:innerRadiusRatio="3" android:shape="ring" android:thicknessRatio="8" android:useLevel="false" > <size android:height="76dip" android:width="76dip" /> <gradient android:angle="0" android:endColor="@color/oceanBlue" android:startColor="@android:color/transparent" android:type="sweep" android:useLevel="false" /> </shape>

Solo haz esto:

public static class ModifiedProgressDialog extends ProgressDialog { public ModifiedProgressDialog(Context context) { super(context); } @Override public void show() { super.show(); setIndeterminateDrawable(getContext().getResources().getDrawable(R.drawable.blue_progress)); } }


Puedes cambiar el color de tu barra de progreso usando el siguiente código:

progressBar.getProgressDrawable().setColorFilter( getResources().getColor(R.color.your_color), PorterDuff.Mode.SRC_IN);


android: indeterminateTint = "@ color / progressbar"


para mí, el tema no funcionaba con acentColor. Pero funcionó con colorControlActivated

<style name="Progressbar.White" parent="AppTheme"> <item name="colorControlActivated">@color/white</item> </style> <ProgressBar android:layout_width="@dimen/d_40" android:layout_height="@dimen/d_40" android:indeterminate="true" android:theme="@style/Progressbar.White"/>


styles.xml

<style name="CircularProgress" parent="Theme.AppCompat.Light"> <item name="colorAccent">@color/yellow</item> </style> <ProgressBar android:layout_width="@dimen/d_40" android:layout_height="@dimen/d_40" android:indeterminate="true" style="@style/Widget.AppCompat.ProgressBar" android:theme="@style/CircularProgress"/>