在android中拍摄Sreen镜头

在android中拍摄Sreen镜头,android,screenshot,Android,Screenshot,我想对我的活动和活动组件(视图)进行屏幕截图 此活动包含一个SurfaceView和一个位于彼此顶部的布局 当我拍摄表面视图的屏幕截图时,效果很好,但是当我拍摄整个活动的屏幕截图时,我没有在其中获得表面视图。我正在使用以下代码: public class Screenshot { private final View view; /** Create snapshots based on the view and its children. */ public Screenshot(

我想对我的活动和活动组件(视图)进行屏幕截图

此活动包含一个SurfaceView和一个位于彼此顶部的布局

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

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

更改this.view=contentView.getRootView()
this.view=contentView

希望能有所帮助。

更改
this.view=contentView.getRootView()
this.view=contentView

希望它会有帮助。

我不确定这是否有帮助,但你不能直接用DDMS拍摄屏幕快照吗

编辑


您是否尝试过为
活动获取
窗口
,并查看可以从中提取哪些视图/图像缓存?

我不确定这是否有帮助,但您不能直接使用DDMS拍摄屏幕快照吗

编辑


您是否尝试过获取
活动的
窗口
,并查看您可以从中提取哪些视图/图像缓存?

解决方法是捕获版面
表面视图
图像,并在版面图像上绘制
表面视图
图像(使用
Canvas.drawBitmap
)在正确的坐标处,使用
SurfaceView

的属性,作为一种解决方法,您可以捕获版面
SurfaceView
图像,并在版面图像上绘制
SurfaceView
图像(使用
Canvas.drawBitmap
)使用
SurfaceView的属性在正确的坐标上

当然可以。但我需要它按代码进行拍摄,以便我可以进一步使用此图像。:)当然可以。但我需要通过代码获取它,以便我可以进一步使用此图像。:)不,屏幕截图中不包含SurfaceView。不,屏幕截图中不包含SurfaceView。这可能是个好主意,但我必须将屏幕热保存为位图,以便向用户显示其活动状态。这似乎不是一个可行的解决方案。您正在处理位图。您只需拍摄两张照片,一张是布局,一张是
SurfaceView
Canvas.drawBitmap
。。。答案里有!使用
getLeft
getTop
获取
SurfaceView
的坐标。这可能是个好主意,但我必须将屏幕保存为位图,以便向用户显示其活动状态。这似乎不是一个可行的解决方案。您正在处理位图。您只需拍摄两张照片,一张是布局,一张是
SurfaceView
Canvas.drawBitmap
。。。答案里有!使用
getLeft
getTop
获取
SurfaceView
的坐标。