gpt4 book ai didi

android - ImageView:如果 ImageView 不可见(在 ScrollView 内),则自动回收位图

转载 作者:IT王子 更新时间:2023-10-28 23:36:01 26 4
gpt4 key购买 nike

所以,我一直在查看 ImageView 源代码,但我还没有想出一个钩子(Hook)来做这件事。

问题:比方说,在一个 ScrollView 中有 30 个 400x800 的图像(图像的数量是可变的)。由于它们完全适合屏幕,因此它们每个将占用 1.3 MB 的 RAM。

我想要的是:能够加载/卸载当前在 ScrollView 中可见的 ImageView 的位图。如果用户滚动并且位图不再可见(在距离阈值内),则应回收位图,以便同一 ScrollView 中的其他位图可以使用内存。我正在做下采样和所有这些,所以不用担心。如果您仅通过扩展 ImageView 来执行此操作,则可以加分(如果可能的话,我不想弄乱 ScrollView)。

总结:我只能在 ImageView 变得可见后才加载图像(使用一个聪明的技巧),但我不知道何时卸载它们。

注意:由于其他可用性原因,我无法使用 ListView 执行此操作。

最佳答案

当你想回收你的位图时调用这个方法。

public static void recycleImagesFromView(View view) {
if(view instanceof ImageView)
{
Drawable drawable = ((ImageView)view).getDrawable();
if(drawable instanceof BitmapDrawable)
{
BitmapDrawable bitmapDrawable = (BitmapDrawable)drawable;
bitmapDrawable.getBitmap().recycle();
}
}

if (view instanceof ViewGroup) {
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
recycleImagesFromView(((ViewGroup) view).getChildAt(i));
}
}
}

关于android - ImageView:如果 ImageView 不可见(在 ScrollView 内),则自动回收位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8349958/

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