Ich stehe einige Schwierigkeiten bei der Arbeit mit benutzerdefinierten ProgressBars in Android. Ich habe nämlich zwei XML-Beschreibungen der benutzerdefinierten ProgressBar, die korrekt sind. Hier sie sind:Android benutzerdefinierte Progress Bar Manipulation
custom_progress_bar_horizontal.xml:
<?xml version="1.0" encoding="UTF-8"?> <!-- @author : @ --> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@android:id/background"> <shape> <corners android:radius="0dip" /> <stroke android:width="1dp" android:color="#ff000000" /> <gradient android:startColor="#ffEEEEEE" android:centerColor="#ffEEEEEE" android:centerY="0.50" android:endColor="#ffEEEEEE" android:angle="270" /> </shape> </item> <item android:id="@android:id/progress"> <clip> <shape> <corners android:radius="0dip" /> <stroke android:width="1dip" android:color="#ff000000" /> <gradient android:startColor="#ff86CF10" android:endColor="#ff86CF10" android:angle="90" /> </shape> </clip> </item>
custom_progress_bar_hor_night.xml:
<?xml version="1.0" encoding="UTF-8"?> <!-- @author : @ --> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@android:id/background"> <shape> <corners android:radius="0dip" /> <stroke android:width="1dp" android:color="#ffffffff" /> <gradient android:startColor="#ff000000" android:centerColor="#ff000000" android:centerY="0.50" android:endColor="#ff000000" android:angle="270" /> </shape> </item> <item android:id="@android:id/progress"> <clip> <shape> <corners android:radius="0dip" /> <stroke android:width="1dip" android:color="#ffffffff" /> <gradient android:startColor="#ff86CF10" android:endColor="#ff86CF10" android:angle="90" /> </shape> </clip> </item>
Wie Sie sehen können, unterscheiden sich diese benutzerdefinierten ProgressBars nur in der Hintergrundfarbe und der Farbe der Formlinie.
Nun, was ist der beste Weg, zwischen diesen beiden .xml-Dateien (ProgressBar-Designs) von der Android-App (Java-Code) zu wechseln? Eigentlich möchte ich das ProgressBar-Design wechseln, wenn die Schaltfläche auf dem App-Bildschirm gedrückt wird.
Sollte ich zwei ProgressBar-Instanzen übereinander haben und die Sichtbarkeit von ihnen ändern (eine sichtbare andere unsichtbare und umgekehrt), oder gibt es eine klügere Möglichkeit, mit einer einzigen ProgressBar-Instanz zu manipulieren?
EDIT:
ich für den Ansatz kennen beschrieben here. Der Benutzer wählt zwischen drei verschiedenen .xml Beschreibungen der ProgressBar auf Basis des aktuellen Fortschrittswert den folgenden Ansatz:
<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:maxLevel="2999" android:drawable="@drawable/progress_horizontal_red" />
<item android:maxLevel="4999" android:drawable="@drawable/progress_horizontal_yellow" />
<item android:maxLevel="10000" android:drawable="@drawable/progress_horizontal_green" />
</level-list>
ich das ganz ähnlich, was erreichen will. Der einzige Unterschied ist, dass ich nicht möchte, dass der aktuelle Fortschrittswert mir die .xml Datei ändert, die auf dem Bildschirm sichtbar sein wird. Ich möchte das ProgressBar-Design per Knopfdruck ändern können. Ich denke, dass android:maxLevel="xxxx"
Selektor mit etwas geändert werden sollte, die true
oder false
Werte annehmen kann. Ich würde diesen true/false
Wert per Knopfdruck umschalten.
Jeder Rat würde sehr geschätzt werden.
Vielen Dank für Ihre Zeit und Mühe.
Mit freundlichen Grüßen, Bojan.
Mitten im Zentrum, Kumpel! Genau das habe ich gesucht. Du hast meinen Tag gemacht und viel Zeit für mich gespart. Vielen Dank! – bojankoce