Wenn ich die eingeschränkte Dokumentation von Google lese, habe ich das Gefühl, dass es möglich ist, das Aussehen (zeichnbar) einer ProgressBar / ProgressDialog zu ändern, indem einfach ein neuer Stil erstellt und der Stileigenschaft der ProgressBar zugewiesen wird. Aber ich kann das nicht richtig zum Laufen bringen. Folgendes habe ich bisher gemacht:
Ich habe eine Form wie diese erstellt (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>
Dann erstellte ich eine Animation (mp3.xml) wie folgt:
<?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>
Dann erstellte ich einen Stil (attrs.xml) wie folgt:
<?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>
und in meiner main.xml habe ich den Stil wie folgt eingestellt:
<?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>
Aber es zeigt immer noch das gleiche Zeichen wie zuvor. Was mache ich falsch?
Antworten:
Ich habe Folgendes verwendet, um einen benutzerdefinierten Fortschrittsbalken zu erstellen.
Datei
res/drawable/progress_bar_states.xml
deklariert die Farben der verschiedenen Zustände:Und der Code in Ihrer Layout-XML:
Genießen!
quelle
ProgressDialog
?Ich hatte einige Probleme, einen unbestimmten Fortschrittsdialog mit der Lösung hier zu verwenden. Nach einiger Arbeit und Versuch und Irrtum habe ich ihn zum Laufen gebracht.
Erstellen Sie zunächst die Animation, die Sie für den Fortschrittsdialog verwenden möchten. In meinem Fall habe ich 5 Bilder verwendet.
../res/anim/progress_dialog_icon_drawable_animation.xml:
Wo Sie einen ProgressDialog anzeigen möchten:
Diese Lösung ist wirklich einfach und hat für mich funktioniert. Sie können ProgressDialog erweitern und das Zeichnen intern überschreiben lassen. Dies war jedoch zu kompliziert für das, was ich brauchte, sodass ich es nicht getan habe.
quelle
Versuchen Sie die Einstellung:
Es hat bei mir funktioniert. Hier ist auch der Code für progress.xml:
quelle
android:drawable=
auf das Tag und entfernen Sie die Form. Endlich jemand, der die Frage nach dem sich drehenden Fortschrittsbalken beantwortet.android:toDegrees
kann ein höherer Wert eingestellt werden. Durch Einstellen aufandroid:toDegrees="1080"
wird die Drehung um das Dreifache erhöht.Ihr Stil sollte so aussehen:
quelle
Benutzerdefinierter Fortschritt mit Skalierung!
quelle
Ich mache deinen Code. Ich kann laufen, aber ich muss zwei Stellen ändern:
name="android:indeterminateDrawable"
anstattandroid:progressDrawable
Ändern Sie den Namen attrs.xml ---> styles.xml
quelle
Ich bin mir nicht sicher, aber in diesem Fall können Sie trotzdem einen vollständig angepassten AlertDialog erstellen, indem Sie im Alarmdialog eine separate Layoutdatei festlegen und die Animation für Ihre Bildansicht mithilfe eines Teils Ihres obigen Codes festlegen, der dies auch tun sollte!
quelle
Und dann anrufen
quelle