Search code examples
androidanimationprogress-barrotationandroid-progressbar

implement a spinning activity indicator similar to iOS in Android


I am trying to implement the spinning activity similar to the the one I have placed below in Android. I believe I should use the ProgressDialog. My issue arises from how to actually manipulate the ProgressDialog to appear like the activity indicator.

Any thoughts are welcome. A link to an example would even be better.

Thanks. enter image description here

REEDIT:

myProgress.java

public class myProgress extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    ProgressDialog d = (ProgressDialog)findViewById(R.id.progres);

main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/progres"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
>
<ProgressBar  
    android:id="@+id/progressBar"
    android:indeterminate="true" 
    style="?android:attr/progressBarStyleLarge"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true" 
/>
</RelativeLayout>

Solution

  • this is how i achieve it

    here is the code

    @Override   
    protected Dialog onCreateDialog(int id) {
        switch (id) {
        case DIALOG_LOADING:
            final Dialog dialog = new Dialog(this, android.R.style.Theme_Translucent);          
            dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
            dialog.setContentView(R.layout.loading);
            dialog.setCancelable(true);
            dialog.setOnCancelListener(new OnCancelListener() {             
                @Override
                public void onCancel(DialogInterface dialog) {
                    //onBackPressed();
                }
            });
        return dialog;  
    
        default:
            return null;
        }
    };
    

    here is the loading.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/progres"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
    >
    <ProgressBar  
        android:indeterminate="true" 
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true" 
    /> 
    </RelativeLayout>
    

    call the dialog with

    showDialog(DIALOG_LOADING);
    

    hide it using

    dismissDialog(DIALOG_LOADING);
    

    UPDATE

    if you want and custom indicator you can do the following in the layout.xml.

    1. replace the ProgressBar with an ImageView
    2. set the background of the ImageView to a AnimationDrawable
    3. you can start the animation in onPrepareDialog