我想在水平 ScrollView 中放置更多图像,请假设图像为 a.jpeg、b.jpeg、c.jpeg、(d,e,f,g,h,i).jpeg 并建议我在 ScrollView 中实现它们?
我尝试通过添加许多图像来制作,如下所示。
这个方法是滞后的:
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/a.jpeg"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/b.jpeg"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/c.jpeg"/>
and many other images....
</HorizontalScrollView>
最佳答案
您直接使用图像,而没有正确管理位图在 Android 中占用的内存。
当您通过 android:src
标签直接在 ImageView
中使用图像时,如果图像太大,必然会出现延迟。
图像加载库,如 Glide用于通过根据设备的 dpi
调整图像大小来加载图像。
简而言之:如果您直接在设备上的 ImageView
中加载 1920*1080 的图像,它将加载完整的图像,即全分辨率图像,浪费大量内存做同样的事情,意味着滚动时更多的卡顿/滞后。但是,当您使用图像加载库加载这些相同的图像时,它们会调整图像的大小,这意味着,如果设备是 1080p,则您的图像是 4K 分辨率,并且如果您的 ImageView
填满屏幕(假设图像完全适合设备),该库将调整图像大小并将图像设为 1080p,然后将其放入 ImageView
中,从而节省绘制位图所需的大量内存。
关于java - 在水平 ScrollView 中添加许多图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56722478/