我正在尝试测试代码以在android模拟器上截取屏幕截图。我有以下代码:
View content = ((ViewGroup)findViewById(android.R.id.content)).getChildAt(0);
content.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(content.getDrawingCache());
content.setDrawingCacheEnabled(false);
但是我在第551行的createBitmap中得到了空指针异常。
有人可以指出我做错了什么。
答案 0 :(得分:1)
我认为您的问题可能来自您的观看内容:
View content = ((ViewGroup)findViewById(android.R.id.content)).getChildAt(0);
您是否尝试删除getChildAt(0)
或将其替换为getRootView()
?
另外,有一个很好的网站,如果它可以帮助你(第一个论坛页面上的最后一篇文章),那里有一个样本:
Capture Screen With Coding
告诉我你是否找到了解决方法。
答案 1 :(得分:0)
在某些情况下,您必须使用MeasureSpec。试试这个:
View content = ((ViewGroup)findViewById(android.R.id.content));
content.setDrawingCacheEnabled(true);
content.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
content.layout(0, 0, content.getMeasuredWidth(), content.getMeasuredHeight());
content.buildDrawingCache(true);
Bitmap bitmap = Bitmap.createBitmap(content.getDrawingCache());