截图是黑色的

时间:2011-12-09 06:29:52

标签: android screenshot

我正在尝试拍摄屏幕截图并将其另存为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();
}

3 个答案:

答案 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是您的活动视图 ..

编辑:查看本教程Android take screenshot from code

答案 2 :(得分:0)

去eclipse ......

  1. 转到Windows
  2. Open Perspective
  3. DDMS
  4. 在左侧选择您的模拟器或手机。
  5. 单击工具栏中上方的摄像头图标。
  6. 很容易:)