versiones pie oreo developer descargar android

pie - Cómo cambiar el color de ProgressBar indeterminado de Android?



android pie (7)

Estoy buscando algo muy obvio (¡en otros idiomas!) ¡Y eso me vuelve loco!

Me gustaría saber cómo puedo cambiar el color de ProgressBar indeterminado de la base de color blanco / gris a negro. Cuando cambio el dibujo indeterminado, obtengo una imagen estática en lugar de una barra de progreso animada en movimiento. ¿Hay alguna forma de hacerlo simplemente en xml?

Gracias !


Para API de menos de 23 uso

progressBar.getIndeterminateDrawable().setColorFilter( getResources().getColor(Your_Color), android.graphics.PorterDuff.Mode.SRC_IN);

otro uso

progressBar.getIndeterminateDrawable().setColorFilter( ContextCompat.getColor(context, Your_Color), android.graphics.PorterDuff.Mode.SRC_IN);


Para obtener una ProgressBar en el tema predeterminado que se va a utilizar en blanco / fondo claro, use uno de los estilos inversos:

<ProgressBar style="@android:style/Widget.ProgressBar.Inverse"/> <ProgressBar style="@android:style/Widget.ProgressBar.Large.Inverse"/> <ProgressBar style="@android:style/Widget.ProgressBar.Small.Inverse"/>

Por lo general, esto le dará una ProgressBar negra transparente, pero algunas instalaciones de SO utilizan activos personalizados. Si está buscando un color específico, deberá enrollar sus propias herramientas siguiendo las instrucciones proporcionadas por CommonsWare.



Veo que otras respuestas son bastante antiguas, para cambiar el color ProgressBar indeterminado, solo tiene que establecer los atributos android:indeterminateTint y android:indeterminateTintMode en su elemento ProgressBar directamente en XML:

<ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:indeterminateTint="@color/colorPrimary" android:indeterminateTintMode="src_in" android:indeterminate="true" />

android:indeterminateTint - Tint para aplicar al indicador de progreso indeterminado.

Debe ser un valor de color, en forma de "#rgb" , "#argb" , "#rrggbb" , "#aarrggbb" , o una referencia a un recurso @color/colorPrimary .

android:indeterminateTintMode - Modo de fusión utilizado para aplicar el tinte del indicador de progreso.

Debe ser uno de los siguientes valores constantes:
add , multiply , screen , src_atop , src_in o src_over

Los métodos Getter y Setter para estos atributos son:

Todos ellos fueron agregados en API nivel 21


de hecho, todo lo que necesita hacer (tanto para cirle como para barra) es crear un archivo xml en drawable como se muestra a continuación ...... progress_spinner_001 apunta a cualquier imagen que desee animar y duración ... cuánto tiempo desea mostrar cada una frame for ....... y set ur android: indeterminateDrawable = filename_in_drawable ....

<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/progress_spinner_001" android:duration="300" /> <item android:drawable="@drawable/progress_spinner_002" android:duration="300" /> <item android:drawable="@drawable/progress_spinner_003" android:duration="300" /> <item android:drawable="@drawable/progress_spinner_004" android:duration="300" /> <item android:drawable="@drawable/progress_spinner_005" android:duration="300" /> <item android:drawable="@drawable/progress_spinner_006" android:duration="300" /> <item android:drawable="@drawable/progress_spinner_007" android:duration="300" /> <item android:drawable="@drawable/progress_spinner_008" android:duration="300" /> </animation-list>

Es posible que necesite cambiar el tamaño de la barra de progreso para mostrarla como desee


progressBar.getIndeterminateDrawable().setColorFilter( getResources().getColor(Your_Color), android.graphics.PorterDuff.Mode.SRC_IN);

y reemplace Your_Color con el color deseado como: R.color.your_color_code


<?xml version="1.0" encoding="UTF-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@android:id/background" android:drawable="@drawable/bg" /> <item android:id="@android:id/secondaryProgress" android:drawable="@drawable/secondary" /> <item android:id="@android:id/progress" android:drawable="@drawable/progress" /> </layer-list>