Now I have a horizontal progress bar which is updated programmatically via ProgressBar setProgress method:
For a circular progress bar, use:
style="?android:attr/progressBarStyle"
More details can be found here: What's the meaning of android:progressBarStyle attribute in ProgressBar?
As for setting its progress: the circular progress bar will keep spinning. Simply hide it after it's no longer needed.
Or you could implement something custom: show a TextView next to it and update it instead of using Progressbar.setProgress.
Step 0: setText("0%");
Step 1 (2 seconds later): setText("3%");
Step 2 (4 seconds later): setText("9%"); etc.