Sometimes, we need an activity to some processing but we need not necessarily have a UI.
For this, you can do just not do a setContentView() call. This will show up an activity with the default theme applied.
But, what if you need a transparent activity? It should be showing what is behind it and still do some stuff.
For that, follow this tutorial:
1. Create an Android project in eclipse.
2. Let us create an Activity called TransparentActivity.
3. Then, we need to create a transparent theme.
<resources>
<style name="Theme.Transparent" parent="android:Theme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
</resources>
4. Add the above code to styles.xml under res/values folder.
5. Then, in your AndroidManifest.xml apply the theme "Theme.Transparent" to this activity like:
6. That's it you are done. This activity will be transparent and not display anything.
7. Additionally, you can call requestWindowFeature(Window.FEATURE_NO_TITLE) to remove the title bar.
Sometimes, you may need to display a dialog on this activity. Say, you are processing something and want to show the user the progress. For this, you can create a ProgressDialog and show it.
But, in case of a transparent activity, it displays an outer box for the dialog.
To get rid of this:
In your onCreateDialog or the place where you are initializing the dialog do the following:
@Override
protected Dialog onCreateDialog(int id) {
switch(id) {
case 100:
dialog = new ProgressDialog(this, ProgressDialog.STYLE_SPINNER);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setMessage("Message");
//The below line does the trick!!
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
return dialog;
}
return super.onCreateDialog(id);
}
That's it for this tutorial. Check this out :)
No comments:
Post a Comment