我的LinearLayout.getDrawingCache()返回了一个NullPointerException异常

3

编辑:

不用理会,我找到办法解决了

TopRatedPage.setDrawingCacheEnabled(true);
TopRatedPage.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
TopRatedPage.layout(0, 0, TopRatedPage.getMeasuredWidth(), TopRatedPage.getMeasuredHeight()); 
TopRatedPage.buildDrawingCache(true);
Bitmap screenshot = Bitmap.createBitmap(TopRatedPage.getDrawingCache());
TopRatedPage.setDrawingCacheEnabled(false);

new:

我正在尝试从一个布局中进行截屏,如下所示。

LinearLayout TopRatedPage = (LinearLayout)inflater.inflate(R.layout.toprated, null);
...
Bitmap screenshot;
TopRatedPage.setDrawingCacheEnabled(true);
screenshot = Bitmap.createBitmap(TopRatedPage.getDrawingCache()); // Caused by: java.lang.NullPointerException
TopRatedPage.setDrawingCacheEnabled(false);

有什么想法我做错了什么吗?

谢谢!

编辑: 还尝试过这样做,它不会抛出错误,但会返回一个空的位图。

Bitmap screenshot = TopRatedPage.getDrawingCache();
1个回答

1

试一下,然后告诉我发生了什么。

LinearLayout TopRatedPage = (LinearLayout)inflater.inflate(R.layout.toprated, null);
Bitmap screenshot = Bitmap.createBitmap(LinearLayout .getWidth(), LinearLayout .getHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(screenshot);
LinearLayout.draw(c);
imageView.setImageBitmap(screenshot);

如果可能的话,也请使用,

View captureView = null;
captureView = inflater.inflate(R.layout.toprated, null);
Bitmap screenshot = Bitmap.createBitmap(captureView.getWidth(), captureView.getHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(screenshot);
captureView .draw(c);
imageView.setImageBitmap(screenshot);

1
谢谢,已经用那些MeasureSpec让它工作了。看起来如果没有它们,位图的大小将为0x0。 :) - Roger Travis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接