Friday, August 5, 2011

Small Tutorial on Creating a transparent activity


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 :)

How to Increase Memory for Android Emulator



This is an issue often faced when setting up the Android Emulator for the first time.
Usually it runs nicely for sometime and then starts giving INSTALL_FAILED_INSUFFICIENT_STORAGE error.

It does not depend on the application size also. Usually, if we restart the emulator the problem goes away but only temporarily. To properly solve this, we need to increase the emulator's memory size.

To do that follow this thread on stackoverflow.com here.