この方法を使用するとうまく機能しますが、最初にスナップショットを撮るときに1つのレイアウトのスナップショットを撮るだけで正しい写真が得られますが、いくつかの変更を加えた後、もう一度スナップショットを撮ると以前のスナップショットが得られます。
RelativeLayout layout = (RelativeLayout)findViewById(R.id.mainview);
layout.setDrawingCacheEnabled(true);
layout.setDrawingCacheQuality(LinearLayout.DRAWING_CACHE_QUALITY_HIGH);
layout.buildDrawingCache();
Bitmap bitmap = layout.getDrawingCache();
File file = new File(Environment.getExternalStorageDirectory().toString() + "/sPenimg.png");
FileOutputStream ostream;
try {
ostream = new FileOutputStream(file);
bitmap.compress(CompressFormat.PNG, 100, ostream);
ostream.flush();
ostream.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
この問題は、((RelativeLayout)findViewById(R.id.mainview)).destroyDrawingCache(); を追加することで解決されます。