屏幕上的键盘捕获活动屏幕

问题描述:

我想捕获我的活动在android上的屏幕。我使用下面的代码:屏幕上的键盘捕获活动屏幕

View root = this.activity.getWindow().getDecorView().getRootView(); 

Bitmap b = Bitmap.createBitmap(root.getWidth(), root.getHeight(), Config.RGB_565); 
Canvas c = new Canvas(b); 
root.draw(c); 

if (b != null && !b.isRecycled()) { 
    this.screen = Bitmap.createBitmap(b); 
} 

如果屏幕上的键盘弹出,那么我就只有我的活动窗口的可见部分在this.screen,其余为空白。

有什么办法让我的应用程序的屏幕截图,包括屏幕键盘下的部分?

+0

我开始向您展示[这](http://stackoverflow.com/a/4290532/1521064)如果你的屏幕截图被挤压 – vault 2013-02-08 18:09:45

+0

截图没有被挤压的问题。在屏幕截图上仅显示那些位于屏幕上方键盘上的对象。一切(即键盘下的对象)都是空白的。我也需要在屏幕截图上放置它们。 – cheshie 2013-02-08 18:45:59

我很抱歉让你失望,但如果没有外援,这是无法完成的。键盘根本不是您的应用程序布局的一部分。

您的“最外层”视图是DecorView,您已经对齐。就这个技术而言。

编辑:我不能尝试了,但给这个一展身手:

View topmost = ((ViewGroup) 
    ctx.getWindow().getDecorView().findViewById(android.R.id.content) 
).getChildAt(0); 

topmost.setDrawingCacheEnabled(true); 

Bitmap screenshot = topmost.getDrawingCache(); 
+0

你的意思是我无法捕获屏幕键盘下的对象?在那种情况下,你说外援时说的是什么意思?另外,即使是在某种程度上,我也不需要捕捉窗口上的键盘,任何东西。 – cheshie 2013-02-08 19:44:04

+0

看到我的编辑,可能帮助 – slezica 2013-02-08 20:03:43

+0

现在不能说,但似乎我找不到那种方法。它是View的方法吗? – cheshie 2013-02-08 21:25:53