Custom Drawable for ProgressBar/ProgressDialog
I used the following for creating a custom progress bar.
File res/drawable/progress_bar_states.xml
declares the colors of the different states:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@android:id/background"> <shape> <gradient android:startColor="#000001" android:centerColor="#0b131e" android:centerY="0.75" android:endColor="#0d1522" android:angle="270" /> </shape> </item> <item android:id="@android:id/secondaryProgress"> <clip> <shape> <gradient android:startColor="#234" android:centerColor="#234" android:centerY="0.75" android:endColor="#a24" android:angle="270" /> </shape> </clip> </item> <item android:id="@android:id/progress"> <clip> <shape> <gradient android:startColor="#144281" android:centerColor="#0b1f3c" android:centerY="0.75" android:endColor="#06101d" android:angle="270" /> </shape> </clip> </item></layer-list>
And the code inside your layout xml:
<ProgressBar android:id="@+id/progressBar" android:progressDrawable="@drawable/progress_bar_states" android:layout_width="fill_parent" android:layout_height="8dip" style="?android:attr/progressBarStyleHorizontal" android:indeterminateOnly="false" android:max="100"></ProgressBar>
Enjoy!
I was having some trouble using an Indeterminate Progress Dialog with the solution here, after some work and trial and error I got it to work.
First, create the animation you want to use for the Progress Dialog. In my case I used 5 images.
../res/anim/progress_dialog_icon_drawable_animation.xml:
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/icon_progress_dialog_drawable_1" android:duration="150" /> <item android:drawable="@drawable/icon_progress_dialog_drawable_2" android:duration="150" /> <item android:drawable="@drawable/icon_progress_dialog_drawable_3" android:duration="150" /> <item android:drawable="@drawable/icon_progress_dialog_drawable_4" android:duration="150" /> <item android:drawable="@drawable/icon_progress_dialog_drawable_5" android:duration="150" /></animation-list>
Where you want to show a ProgressDialog:
dialog = new ProgressDialog(Context.this);dialog.setIndeterminate(true);dialog.setIndeterminateDrawable(getResources().getDrawable(R.anim.progress_dialog_icon_drawable_animation));dialog.setMessage("Some Text");dialog.show();
This solution is really simple and worked for me, you could extend ProgressDialog and make it override the drawable internally, however, this was really too complicated for what I needed so I did not do it.
Try setting:
android:indeterminateDrawable="@drawable/progress"
It worked for me. Here is also the code for progress.xml:
<?xml version="1.0" encoding="utf-8"?><rotate xmlns:android="http://schemas.android.com/apk/res/android" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="0" android:toDegrees="360"> <shape android:shape="ring" android:innerRadiusRatio="3" android:thicknessRatio="8" android:useLevel="false"> <size android:width="48dip" android:height="48dip" /> <gradient android:type="sweep" android:useLevel="false" android:startColor="#4c737373" android:centerColor="#4c737373" android:centerY="0.50" android:endColor="#ffffd300" /> </shape></rotate>