Al leer la documentación limitada que Google ha proporcionado, tengo la sensación de que es posible cambiar el aspecto (dibujable) de un ProgressBar / ProgressDialog simplemente creando un nuevo estilo y asignándolo a la propiedad de estilo de ProgressBar. Pero no puedo hacer que esto funcione correctamente. Esto es lo que hice hasta ahora:
Creé una forma como esta (mp2.xml)
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="ring"
android:innerRadiusRatio="4"
android:thicknessRatio="4"
android:useLevel="false">
<size android:width="50dip" android:height="50dip" />
<gradient android:type="sweep" android:useLevel="false" android:startColor="#300000ff" android:centerColor="#500000ff" android:endColor="#ff0000ff" />
</shape>
luego creó una animación (mp3.xml) como esta:
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false">
<item android:duration="70">
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/mp2" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="0" android:toDegrees="30" android:repeatCount="1" />
</item>
<item android:duration="70">
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/mp2" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="30" android:toDegrees="60" android:repeatCount="1" />
</item>
<item android:duration="70">
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/mp2" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="60" android:toDegrees="90" android:repeatCount="1" />
</item>
<item android:duration="70">
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/mp2" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="90" android:toDegrees="120" android:repeatCount="1" />
</item>
<item android:duration="70">
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/mp2" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="120" android:toDegrees="150" android:repeatCount="1" />
</item>
<item android:duration="70">
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/mp2" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="150" android:toDegrees="180" android:repeatCount="1" />
</item>
<item android:duration="70">
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/mp2" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="180" android:toDegrees="210" android:repeatCount="1" />
</item>
<item android:duration="70">
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/mp2" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="210" android:toDegrees="240" android:repeatCount="1" />
</item>
<item android:duration="70">
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/mp2" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="240" android:toDegrees="270" android:repeatCount="1" />
</item>
<item android:duration="70">
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/mp2" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="270" android:toDegrees="300" android:repeatCount="1" />
</item>
<item android:duration="70">
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/mp2" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="300" android:toDegrees="330" android:repeatCount="1" />
</item>
<item android:duration="70">
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/mp2" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="330" android:toDegrees="360" android:repeatCount="1" />
</item>
</animation-list>
luego creó un estilo (attrs.xml) como este:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style parent="@android:style/Widget.ProgressBar" name="customProgressBar">
<item name="android:progressDrawable">@anim/mp3</item>
</style>
</resources>
y en mi main.xml he configurado el estilo de esta manera:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" android:drawingCacheQuality="high">
<ProgressBar android:id="@+id/ProgressBar01"
android:layout_width="wrap_content"
android:layout_height="wrap_content" style="@style/customProgressBar"/>
</LinearLayout>
Pero todavía muestra el mismo dibujo que antes. ¿Qué estoy haciendo mal?
Respuestas:
Usé lo siguiente para crear una barra de progreso personalizada.
El archivo
res/drawable/progress_bar_states.xml
declara los colores de los diferentes estados:Y el código dentro de su diseño xml:
¡Disfrutar!
fuente
ProgressDialog
?Estaba teniendo problemas para usar un Diálogo de progreso indeterminado con la solución aquí, después de un poco de trabajo y prueba y error, lo hice funcionar.
Primero, cree la animación que desea usar para el Diálogo de progreso. En mi caso usé 5 imágenes.
../res/anim/progress_dialog_icon_drawable_animation.xml:
Donde desea mostrar un ProgressDialog:
Esta solución es realmente simple y funcionó para mí, podría extender ProgressDialog y hacer que anule internamente el dibujable, sin embargo, esto era realmente demasiado complicado para lo que necesitaba, así que no lo hice.
fuente
Intenta configurar:
Funcionó para mi. Aquí también está el código para progress.xml:
fuente
android:drawable=
en la etiqueta de rotación y luego elimine la forma. Finalmente alguien que responde la pregunta de la barra de progreso giratoria.android:toDegrees
se puede establecer en un valor más alto. Establecerloandroid:toDegrees="1080"
aumentará la rotación en 3 veces.Tu estilo debería verse así:
fuente
¡Progreso personalizado con escala!
fuente
Hago su código. Puedo ejecutar pero necesito modificar dos lugares:
name="android:indeterminateDrawable"
en vez deandroid:progressDrawable
modificar nombre attrs.xml ---> styles.xml
fuente
No estoy seguro, pero en este caso aún puede usar un AlertDialog personalizado completo al tener un archivo de diseño separado establecido en el cuadro de diálogo de alerta y configurar la animación para su vista de imagen usando parte del código anterior que también debería hacerlo.
fuente
Y luego llama
fuente