Furthering my comment above, try something like this, I usually get pretty good quality from this, although haven't noticed what gradients look like. The DRAWING_CACHE_QUALITY_HIGH may help, not sure.
void getScreenCap(View yourView) {
yourView.setDrawingCacheEnabled(true);
yourView.setDrawingCacheQuality(LinearLayout.DRAWING_CACHE_QUALITY_HIGH);
yourView.buildDrawingCache();
Bitmap bmp = null;
if (yourView != null) {
try {
bmp = Bitmap.createBitmap(yourView.getDrawingCache());
} catch (NullPointerException e) { }
}
yourView.setDrawingCacheEnabled(false);
yourView.destroyDrawingCache();
if (bmp != null) {
String file_path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/";
File dir = new File(file_path);
if (!dir.exists()) {
dir.mkdirs();
}
File file = new File(dir, "screencap.png");
FileOutputStream fOut = null;
try { fOut = new FileOutputStream(file); } catch (FileNotFoundException e1) { }
bmp.compress(Bitmap.CompressFormat.PNG, 85, fOut);
try { fOut.flush(); fOut.close(); } catch (IOException e1) { }
}
}
I'm not sure if this will compile, but it has the stuff you would need to take a screen cap of your app.
Your AVD needs an SDCARD and in your manifest you also need:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>