我正在尝试拍摄屏幕截图并将其另存为SD卡上的png文件。保存我的文件,其文件大小为1.57Kb,但它是黑色的。我正在使用以下代码:
View content = findViewById(R.id.id_ll_SurfaceView);
content.setDrawingCacheEnabled(true);
Bitmap b = content.getDrawingCache();
b.createBitmap(800, 480, Config.ARGB_8888);
File file = new File("/sdcard/test.png");
try
{
file.createNewFile();
FileOutputStream fos = new FileOutputStream(file);
FileOutputStream(
Environment.getExternalStorageDirectory().getAbsoluteFile()+"/test.jpg"));
b.compress(CompressFormat.PNG, 100, fos);
fos.close();
Toast.makeText(getApplicationContext(), "Saved", 0).show();
}
catch (Exception e)
{
e.printStackTrace();
}
答案 0 :(得分:2)
您是否正在从onCreate()中截取屏幕截图..您必须等到视图完全在屏幕上绘制。当视图完全在屏幕上绘制时,使用ViewTreeObserver获取回调..
在onCreate中添加此代码..
ViewTreeObserver vto = yourView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
layout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
yourScreenshotFunction();
}
});
现在实现这个功能
public void yourScreenshotFunction(){
//Add your screenshot taking code here..
}
请参阅我的问题here ..我已经解释了最终结果标题下的程序。
答案 1 :(得分:1)
我正在做,
main.setDrawingCacheEnabled(true);
screenshot = Bitmap.createBitmap(main.getDrawingCache());
File file = new File("/sdcard/test.png");
try
{
file.createNewFile();
FileOutputStream fos = new FileOutputStream(file);
screenshot.compress(CompressFormat.PNG, 100, fos);
fos.close();
Toast.makeText(getApplicationContext(), "Saved", 0).show();
}
catch (Exception e)
{
e.printStackTrace();
}
此处 main是您的活动视图 ..
答案 2 :(得分:0)
去eclipse ......