Lendo a documentação limitada que o Google forneceu, sinto que é possível alterar a aparência (desenhável) de um ProgressBar / ProgressDialog simplesmente criando um novo estilo e atribuindo-o à propriedade style do ProgressBar. Mas não consigo fazer isso funcionar corretamente. Aqui está o que eu fiz até agora:
Eu criei uma 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>
então criou uma animação (mp3.xml) assim:
<?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>
então criou um estilo (attrs.xml) assim:
<?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>
e no meu main.xml eu defini o estilo assim:
<?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>
Mas ainda mostra o mesmo desenho que antes. O que estou fazendo de errado?
Respostas:
Usei o seguinte para criar uma barra de progresso personalizada.
O arquivo
res/drawable/progress_bar_states.xml
declara as cores dos diferentes estados:E o código dentro do seu layout xml:
Aproveitar!
fonte
ProgressDialog
?Eu estava tendo problemas para usar um Diálogo de Progresso Indeterminado com a solução aqui, depois de algum trabalho, tentativa e erro, consegui fazê-lo funcionar.
Primeiro, crie a animação que você deseja usar para a caixa de diálogo Progresso. No meu caso, usei 5 imagens.
../res/anim/progress_dialog_icon_drawable_animation.xml:
Onde você deseja mostrar um ProgressDialog:
Essa solução é realmente simples e funcionou para mim; você poderia estender o ProgressDialog e substituir o drawable internamente; no entanto, isso era realmente muito complicado para o que eu precisava, então não o fiz.
fonte
Tente configurar:
Funcionou para mim. Aqui também está o código para progress.xml:
fonte
android:drawable=
a etiqueta girar e remover a forma. Finalmente, alguém que responde à pergunta da barra de progresso giratório.android:toDegrees
pode ser definida como um valor mais alto. Configurá-lo paraandroid:toDegrees="1080"
aumentará a rotação em 3 vezes.Seu estilo deve ficar assim:
fonte
Progresso personalizado com escala!
fonte
Eu faço o seu código. Posso executar, mas preciso modificar dois locais:
name="android:indeterminateDrawable"
ao invés deandroid:progressDrawable
modificar nome attrs.xml ---> styles.xml
fonte
Não tenho certeza, mas, neste caso, você ainda pode usar um AlertDialog completo e personalizado, com um arquivo de layout separado definido na caixa de diálogo de alerta e definir a animação para a visualização de imagens usando parte do código acima que também deve ser usado!
fonte
E então ligue
fonte