T
Tom299
Stamm-User
- 122
Hallo,
ich habe für meine Progressbar verschiedene Farb-Layouts angelegt (grün, rot, blau). Wenn ich mein Layout in der onCreate-Methode setze, dann funktioniert es auch einwandfrei.
Versuch ich jetzt während des "Progresses" das Layout zu ändern (z.B. mit rot starten, ab 30% blau und ab 80% grün), dann verschwindet meine Progressbar und sich sehe nichts mehr.
Beispielcode:
color.xml
red_progress.xml
green_progress.xml und blue_progress.xml sind fast identisch.
in der onCreate-Methode:
und mein Update-Versuch sieht so aus (habs mit runOnUiThread und ohne versucht, mit und ohne invalidate(), doch es klappt nie ...
jemand eine Idee woran es liegen könnte?
ich habe für meine Progressbar verschiedene Farb-Layouts angelegt (grün, rot, blau). Wenn ich mein Layout in der onCreate-Methode setze, dann funktioniert es auch einwandfrei.
Versuch ich jetzt während des "Progresses" das Layout zu ändern (z.B. mit rot starten, ab 30% blau und ab 80% grün), dann verschwindet meine Progressbar und sich sehe nichts mehr.
Beispielcode:
color.xml
Code:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="greenStart">#ff33dd44</color>
<color name="greenMid">#ff0A8815</color>
<color name="greenEnd">#ff1da130</color>
<color name="redStart">#ffdd3344</color>
<color name="redMid">#ff880A15</color>
<color name="redEnd">#ffa11d30</color>
<color name="blueStart">#ff3344dd</color>
<color name="blueMid">#ff0A1588</color>
<color name="blueEnd">#ff1A30a1</color>
</resources>
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">
<shape>
<corners android:radius="5dip" />
<gradient
android:startColor="#ff9d9e9d"
android:centerColor="#ff5a5d5a"
android:centerY="0.75"
android:endColor="#ff747674"
android:angle="270"
/>
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<corners android:radius="5dip" />
<gradient
android:startColor="#80ffd300"
android:centerColor="#80ffb600"
android:centerY="0.75"
android:endColor="#a0ffcb00"
android:angle="270"
/>
</shape>
</clip>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<corners
android:radius="5dip" />
<gradient
android:startColor="@color/redStart"
android:centerColor="@color/redMid"
android:centerY="0.75"
android:endColor="@color/redEnd"
android:angle="270"
/>
</shape>
</clip>
</item>
</layer-list>
in der onCreate-Methode:
Code:
progBar.setProgressDrawable(getResources().getDrawable(R.drawable.red_progress));
Code:
private void checkProgressBarColor() {
if (progressCounter[3] >= 30) {
if (progressCounter[3] >= 80) {
progBar.setProgressDrawable(getResources().getDrawable(R.drawable.green_progress));
progBar.invalidate();
}
else {
runOnUiThread(new Runnable() {
@Override
public void run() {
progBar.setProgressDrawable(getResources().getDrawable(R.drawable.blue_progress));
progBar.invalidate();
}
});
}
}
}