在水平滚动视图中添加许多图像?

时间:2019-06-23 09:07:50

标签: java android android-studio android-recyclerview horizontalscrollview

我想在水平滚动视图中放置更多图像,请假定图像为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>

3 个答案:

答案 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来动态显示图像。