我的应用程序需要使用软键盘捕获屏幕。但是以下行没有捕获它们。
View v1 = getWindow().getDecorView().getRootView();
v1.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
答案 0 :(得分:2)
捕获屏幕时这是一个已知问题。 实际上这也不能被称为问题,因为这是Android视图层次结构的默认行为。我试图用一种简单的语言解释它:
您尝试使用绘图缓存捕获的视图具有独立的窗口层。 AlertDialog,Dialog,Keyboard,Progressdialog等有自己独立的装饰视图窗口,它与视图的窗口层次结构不同。 你可以肯定地看到这种差异,因为它有不同的Z指数,它漂浮在你的活动视图之上。
View.getDrawingCache()
方法仅捕获活动视图范围内的视图,在这种情况下,对话框,键盘等放置在视图上方而不是视图范围内。 因此,在使用此方法时,它不会被捕获为位图。
我希望这可以帮助您理解这不是问题,而是我们无法使用绘图缓存捕获对话框和浮动窗口的限制。 如果有任何方法可以做到这一点,我也想了解这一点。
感谢。