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"