我试过下面的代码,但是当我运行它时会在Android手机上提供一个黑屏图像,在模拟器上它会提供一个文件,通过打开这个文件,我得到消息为预览不可用。
View v = activity.getWindow().getDecorView();
v.setDrawingCacheEnabled(true);
v.destroyDrawingCache();
int width = activity.getWindowManager().getDefaultDisplay().getWidth();
int height = activity.getWindowManager().getDefaultDisplay().getHeight();
v.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
v.layout(0, 0, width, height);
v.buildDrawingCache(true);
Bitmap b = Bitmap.createBitmap(v.getDrawingCache());
v.setDrawingCacheEnabled(false); // clear drawing cache
FileOutputStream fos = null;
File fTree = new File(sdCardRoot,"/fi.png");
fTree.createNewFile();
try {
fos = new FileOutputStream(fTree,true);
if (null != fos) {
b.compress(Bitmap.CompressFormat.PNG, 90, fos);
fos.flush();
fos.close();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
请有人帮忙。谢谢。
答案 0 :(得分:1)
好的。您可能必须覆盖以下方法。问题是因为您的视图尚未创建,甚至在此之前您尝试获取实际上不存在的背景,因此您无法获得任何图像。
试试这个,
@Override
public void onWindowFocusChanged(boolean hasFocus)
{
// add the entire code for getting the background within this and it will work
}
一旦绘制了视图,就会调用此方法,因此您将通过重写此方法获得所需的输出。
答案 1 :(得分:0)
这在onCreate()中不起作用,因为只有在onCreate()完成后,Activity才可见。 在onCreate()完成时触发一些事件来运行代码。可能是按钮事件的onClick()。