我想拍摄一下活动和活动(视图)组件的屏幕截图。
此活动包含一个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;
}
}
答案 0 :(得分:1)
您可以采取的解决方法是捕获布局和 SurfaceView
图片,并在布局图片上绘制SurfaceView
图片(使用Canvas.drawBitmap
)使用SurfaceView
的属性在右边坐标处。
答案 1 :(得分:0)
将this.view = contentView.getRootView();
更改为this.view = contentView;
希望它会有所帮助。
答案 2 :(得分:0)
我不确定这是否会有所帮助,但你不能直接使用DDMS拍摄屏幕截图吗?
修改强>
您是否尝试获取Window
的{{1}}并查看可以从中获取的视图/图片缓存?