在android中截取屏幕截图

时间:2012-07-18 10:36:12

标签: android screenshot

我想拍摄一下活动和活动(视图)组件的屏幕截图。

此活动包含一个SurfaceView和一个相互叠加的布局。

当我拍摄Surface视图的屏幕截图时效果很好,但是当我拍摄整个Activity的屏幕截图时,我没有获得表面视图。我使用以下代码:

public class Screenshot {
  private final View view;
  /** Create snapshots based on the view and its children. */
  public Screenshot(View root) {
    this.view = root;
  }
  /** Create snapshot handler that captures the root of the whole activity. */
  public Screenshot(Activity activity) {
    final View contentView = activity.findViewById(android.R.id.content);
    this.view = contentView.getRootView();
  }
  /** Take a snapshot of the view. */
  public Bitmap snap() {
    Bitmap bitmap = Bitmap.createBitmap(this.view.getWidth(), this.view.getHeight(), Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    view.draw(canvas);
    return bitmap;
  }
}

3 个答案:

答案 0 :(得分:1)

您可以采取的解决方法是捕获布局 SurfaceView图片,并在布局图片上绘制SurfaceView图片(使用Canvas.drawBitmap )使用SurfaceView的属性在右边坐标处。

答案 1 :(得分:0)

this.view = contentView.getRootView();更改为this.view = contentView; 希望它会有所帮助。

答案 2 :(得分:0)

我不确定这是否会有所帮助,但你不能直接使用DDMS拍摄屏幕截图吗?

修改

您是否尝试获取Window的{​​{1}}并查看可以从中获取的视图/图片缓存?