Skip to content Skip to sidebar Skip to footer

Switching Color Of A Progressbar Programmatically

so i have a Layer-List with an Item with a shape and a solid color. Now i want to change this color inside my code.
<?xml version="1.0" encoding="utf-8"?><layer-listxmlns:android="http://schemas.android.com/apk/res/android"><itemandroid:id="@android:id/background"><shape><cornersandroid:radius="5dip" /><gradientandroid:startColor="#ff9d9e9d"android:centerColor="#ff5a5d5a"android:centerY="0.75"android:endColor="#ff747674"android:angle="270"
            /></shape></item><itemandroid:id="@android:id/secondaryProgress"><clip><shape><cornersandroid:radius="5dip" /><gradientandroid:startColor="#80ffd300"android:centerColor="#80ffb600"android:centerY="0.75"android:endColor="#a0ffcb00"android:angle="270"
                /></shape></clip></item><itemandroid:id="@android:id/progress"><clip><shape><cornersandroid:radius="5dip" /><gradientandroid:startColor="#ffffd300"android:centerColor="#ffffb600"android:centerY="0.75"android:endColor="#ffffcb00"android:angle="270"
                /></shape></clip></item></layer-list>

res/drawable/progress_horizontal_red.xml

<?xml version="1.0" encoding="utf-8"?><layer-listxmlns:android="http://schemas.android.com/apk/res/android"><itemandroid:id="@android:id/background"><shape><cornersandroid:radius="5dip" /><gradientandroid:startColor="#ff9d9e9d"android:centerColor="#ff5a5d5a"android:centerY="0.75"android:endColor="#ff747674"android:angle="270"
            /></shape></item><itemandroid:id="@android:id/secondaryProgress"><clip><shape><cornersandroid:radius="5dip" /><gradientandroid:startColor="#80ffd300"android:centerColor="#80ffb600"android:centerY="0.75"android:endColor="#a0ffcb00"android:angle="270"
                /></shape></clip></item><itemandroid:id="@android:id/progress"><clip><shape><cornersandroid:radius="5dip" /><gradientandroid:startColor="#ffff0000"android:centerColor="#ff990000"android:centerY="0.75"android:endColor="#ffff0000"android:angle="270"
                /></shape></clip></item></layer-list>

res/drawable/progress_horizontal_green.xml

<?xml version="1.0" encoding="utf-8"?><layer-listxmlns:android="http://schemas.android.com/apk/res/android"><itemandroid:id="@android:id/background"><shape><cornersandroid:radius="5dip" /><gradientandroid:startColor="#ff9d9e9d"android:centerColor="#ff5a5d5a"android:centerY="0.75"android:endColor="#ff747674"android:angle="270"
            /></shape></item><itemandroid:id="@android:id/secondaryProgress"><clip><shape><cornersandroid:radius="5dip" /><gradientandroid:startColor="#80ffd300"android:centerColor="#80ffb600"android:centerY="0.75"android:endColor="#a0ffcb00"android:angle="270"
                /></shape></clip></item><itemandroid:id="@android:id/progress"><clip><shape><cornersandroid:radius="5dip" /><gradientandroid:startColor="#ff00ff00"android:centerColor="#ff009900"android:centerY="0.75"android:endColor="#ff00ff00"android:angle="270"
                /></shape></clip></item></layer-list>

res/drawable/battery_charge_fill.xml

<?xml version="1.0" encoding="utf-8"?><level-listxmlns:android="http://schemas.android.com/apk/res/android"><itemandroid:maxLevel="2999"android:drawable="@drawable/progress_horizontal_red" /><itemandroid:maxLevel="4999"android:drawable="@drawable/progress_horizontal_yellow" /><itemandroid:maxLevel="10000"android:drawable="@drawable/progress_horizontal_green" /></level-list>

Then in the layout file my progress bar declaration was like this:

<ProgressBar android:max="100" 
    android:progress="60"
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"
    android:id="@+id/BatteryLevelProgress"
    style="@android:style/Widget.ProgressBar.Horizontal"
    android:progressDrawable="@drawable/battery_charge_fill"   />

Then in java:

//progress is between 0 and 100 so set level of drawable to progress * 100DrawablebatteryProgressD= batteryProgressBar.getProgressDrawable();
batteryProgressD.setLevel(progress*100);
batteryProgressBar.setProgress(progress);

Post a Comment for "Switching Color Of A Progressbar Programmatically"