我想在水平滚动视图中放置更多图像,请假定图像为a.jpeg,b.jpeg,c.jpeg,(d,e,f,g,h,i).jpeg并建议我在滚动视图中隐含它们?
我试图通过添加许多图像来制作图像,如下所示。
此方法落后:
<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>
答案 0 :(得分:2)
您直接使用图像而未正确管理位图在Android中占用的内存。
使用ImageView
标签在android:src
中直接使用图像时,如果图像太大,势必会滞后。
Glide之类的图像加载库用于根据设备的dpi
调整图像大小来加载图像。
简而言之:如果直接在设备上的ImageView
内加载1920 * 1080图像,则会加载完整图像,即全分辨率图像,这样做会浪费大量内存,这意味着,滚动时出现更多的停顿/滞后。但是,当您使用图像加载库加载相同的图像时,它们会调整图像的大小,这意味着,如果设备的分辨率为1080p,则图像的分辨率为4K,并且ImageView
会填满整个屏幕(假设图像完全适合该设备),该库将调整大小并将其设为1080p,然后将其放入ImageView
内,从而节省了绘制位图所需的大量内存。
答案 1 :(得分:0)
动态添加图片
//int imageArray[] = [ R.drawable.ic_launcher, ....];
HorizontalScrollView horizontalScrollView = (HorizontalScrollView)
findViewById(R.id.horizontalScrollView);
for(int i=0; i< imageArray.length; i++) {
ImageView image = new ImageView(MainActivity.this);
image.setBackgroundResource(imageArray[i]);
horizontalScrollView.addView(image);
}
答案 2 :(得分:0)
我认为您需要使用RecycleView
而不是HorizontalScrollView
来动态显示图像。