I am trying to replicate the experience found when you are uninstalling an app in ICS. Specifically the indeterminate progress indicator under the title bar. I have tried using requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS) and the various methods on Activity but to no avail. It instead shows a spinning progress bar in the top right hand corner of the screen/title bar. Am I missing something simple here? Or is this completely custom?
Here is the code I am using:
#Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
super.onCreate(savedInstanceState);
setProgressBarIndeterminate(true);
setProgressBarIndeterminateVisibility(true);
}
You are using the ActionBar indeterminate progress bar, but you are looking for a ProgressBar View.
You can create the View programmatically or add it to a layout file like --
<ProgressBar
android:id="#+id/progressBar1"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:indeterminate="true" />
Typically, you can decide when it is shown by calling .setVisibility(View.VISIBLE) to show and .setVisibility(View.GONE) when you are done.
If you have a minimum API of 11 and set your activity or app theme to #android:style/Theme.Holo you will get exactly that ProgressBar shown in your image.
If you want a similar effect on pre-API 11 devices, check out HoloEverywhere
Disclaimer: #iagreen's answer is still the right one -- to get layout similar to the one in uninstall activity your best option is to just use it in a layout, not rely on window features)
But you were on a right track with windows features, you just mixed two of them up.
See, this:
setProgressBarIndeterminate(true);
requests the window's [horizontal] progress bar to be indeterminate. And this:
setProgressBarIndeterminateVisibility(true);
shows the window's indeterminate progress bar -- thing is, it's a completely diffrerent view.
To clarify things further, this gets you a horizontal indeterminate progress bar shown at the top of the window
requestWindowFeature(Window.FEATURE_PROGRESS);
setProgressBarIndeterminate(true);
setProgressBarVisibility(true);
and this gets you a spinner-style progress bar in the actionbar
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setProgressBarIndeterminateVisibility(true);
That's a horizontal progress bar in the image, the Action Bar indeterminate progress bar is a Spinner style. You'd either need to make a custom view for the action bar, or put it as a view in your main layout. You can hide the action bar and make a custom header for a particular activity. Just use the Spinner style indeterminate progress bar, it's what everyone expects to see in the Action Bar.
Related
I have seen a few people trying to get an indeterminate progress bar to show and that is kind of the opposite problem than I am having.
What I want is when the app starts to do work the user sees an indeterminate progress bar at the top of the Window. Then goes away when the work is complete.
I am using the app compat v7 library. My Activity extends android.support.v7.app.ActionBarActivity.
The code I have in my Activity.onCreate() is:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.main);
...
}
Then when work starts (in a Fragment, not on the main thread):
((ActionBarActivity) getActivity()).setSupportProgressBarIndeterminateVisibility(true);
Then when work completes:
((ActionBarActivity) getActivity()).setSupportProgressBarIndeterminateVisibility(false);
Two curious behaviors I can't really explain. First, on setSupportProgressBarIndeterminateVisibility(true) Both the Window progress shows (that I want) and the Action Bar's circular progress bar shows.
Second, on setSupportProgressBarIndeterminateVisibility(false) the Window progress hides (hurray) and that's it... the circular progress bar stays visible...
So I don't know why any of the Action Bar's progress stuff happens, nor do I know how to make it stop. If I knew the id of the progress view in the Action Bar I could look that up in the menu and make sure it stays hidden, but I don't know that id (also seems like the wrong way to go about that).
Any help explaining this behavior would be great. Thank you!!
For the first issue:
It's not obvious from the code given, but the calls to setSupportProgressBarIndeterminateVisibility were being called from a background thread. If I move that code to the UI Thread, everything works without UI glitches.
For the second issue:
It does seem that the default behavior should be to show the circular progress bar on the ActionBar. Not entirely sure why the progress on the top of the activity shows as well. You can hide the ActionBar's progress with a style, but I moved away from that before I tested it on older Android platforms.
I am using ActionBarSherlock, and using custom view for the action bar and i want to make progress bar, using this code
requestWindowFeature(Window.FEATURE_PROGRESS);
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.activity_main);
setSupportProgressBarIndeterminateVisibility(true);
setProgressBarIndeterminate(true);
but somehow the progress bar is appear above the action bar and also it put a circle progress indication at left most of action bar,
how to put the progress bar under the action bar and remove the circle indicator?
thank you
The reason for the circle, is this line of code.
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
And as for the progressbar this should enable it.
requestWindowFeature(Window.FEATURE_PROGRESS);
As you've already done, what you need now is to alter it.
look here for an example.
For a similar question with a good answer look here.
I am using an Action bar in my project. I am displaying a progress bar via the below approach.
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setProgressBarIndeterminateVisibility(true);
However, what I'd really like to do is replace the left most image icon with the progress indicator when arbitrary background processes run and then returns the usual icon when complete.
Can anyone tell me the steps needed to replace this icon with a functional Progress indicator. It only needs to be an intermediate one.
Looks like you can find some suggestions here: Android: dynamically change ActionBar icon?.
Specifically, you can access the icon by using
Activity.findViewById(android.R.id.home)
And then just set and re-set the icon as needed.
You need to build a custom layout for this and use actionbar.setCustomView(yourcustomlayout);
In your custom layout have an imageView(which is your app icon) and progress bar(initially which is set to invisible).
When running the background process just set the visibility between image view and progress bar.
Is there a way to show, only while loading, a webview's progress bar, at the bottom of the app ?
Currently, my progress bar is showed in the title bar. But I don't want it there. I want it at the botton of the app.
Is there a way to do it ?
Thanks!
A solution is to hide the title bar (not necessary but it will save screen space), and add your own progress bar at the bottom of your layout.
But it goes against the normal user interface standards and could be confusing to users so I wouldn't recommend to change the progress bar location.
I want to draw an spinning wheel on the title bar of the activity when another activity is loading in background. But I don't know how to do that. Please Help me regarding that. Listen I don't want Progress Bar, I want some thing like progress bar on the title bar of the screen, which is running till another activity is loaded or not?...........
I believe the only way to do it is to use your own custom title bar. The best thing to do is to make a title bar layout and just it in all the other layouts and maybe have a helper class to show and hide the progress bar.