gpt4 book ai didi

android - 调用 getDrawingCache() 时 View 太大而无法放入绘图缓存

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:00:35 25 4
gpt4 key购买 nike

我正在尝试截取 LinearLayout 的内容。该布局包含一个高度/宽度可变的 ScrollView 。当布局不是太大时,此代码工作正常(即您不需要滚动到屏幕外太多以查看所有内容):

View v1 = (LinearLayout)theLayout;

v1.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);

但是,如果我 try catch 的 LinearLayout 很大,则应用程序会因 v1.getDrawingCache() 上的空指针而崩溃。

logcat 有错误:

05-11 13:16:20.999: W/View(17218): View too large to fit into drawing cache, needs 4784400 bytes, only 3932160 available

如何正确截取此布局的屏幕截图?有没有另一种不使用太多内存的方法?

最佳答案

以下是最终让我完整地捕捉大屏幕外 View 的方法:

public static Bitmap loadBitmapFromView(View v) 
{
Bitmap b = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.ARGB_8888);

Canvas c = new Canvas(b);
v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height);
v.draw(c);
return b;
}

类似于答案here , 除了我使用 View 的宽度/高度来创建位图

关于android - 调用 getDrawingCache() 时 View 太大而无法放入绘图缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16500379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com