1

我想截取我的 Activity 和 Activity (View) 组件的屏幕截图。

这个 Activity 包含一个 SurfaceView 和一个相互叠加的布局。

当我截取 Surface 视图的屏幕截图时,它运行良好,但是当我截取整个 Activity 的屏幕截图时,我没有得到其中的 Surface 视图。我正在使用以下代码:

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;
  }
}
4

3 回答 3

1

作为一种解决方法,您可以做的是捕获布局SurfaceView图像,并SurfaceView使用.Canvas.drawBitmapSurfaceView

于 2012-07-18T10:56:15.460 回答
0

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

于 2012-07-18T10:42:58.487 回答
0

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

编辑

您是否尝试过获取WindowActivity查看可以从中提取哪些视图/图像缓存?

于 2012-07-18T10:48:03.087 回答