有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我想在水平滚动视图中放置更多图像,请假设图像为,a.jpeg,b.jpeg,c.jpeg,(d,e,f,g,h,I)。jpeg和建议我在scrollview中实现它们

我试图通过添加许多图像来制作,如下所示

这种方法是滞后的:

 <HorizontalScrollView
        安卓:layout_width="match_parent"
        安卓:layout_height="wrap_content">

        <ImageView
            安卓:layout_width="wrap_content"
            安卓:layout_height="wrap_content" 
            安卓:src="@drawable/a.jpeg"/>

<ImageView
            安卓:layout_width="wrap_content"
            安卓:layout_height="wrap_content" 
            安卓:src="@drawable/b.jpeg"/>

<ImageView
            安卓:layout_width="wrap_content"
            安卓:layout_height="wrap_content" 
            安卓:src="@drawable/c.jpeg"/>

and many other images....

    </HorizontalScrollView>

共 (3) 个答案

  1. # 1 楼答案

    您直接使用图像,而没有正确管理Android中位图占用的内存

    当您使用android:src标记直接使用ImageView中的图像时,如果图像太大,它肯定会延迟

    Glide这样的图像加载库用于通过根据设备的dpi调整图像大小来加载图像

    简而言之:如果你把1920*1080的图像直接加载到设备上的ImageView中,它会加载完整的图像,即全分辨率图像,这样做会浪费大量内存,这意味着滚动时会有更多的停顿/延迟。但是,当你使用图像加载库加载这些相同的图像时,它们会调整图像的大小,这意味着,如果设备是1080p,你的图像的分辨率是4K,如果你的ImageView填满了屏幕(假设图像完全适合设备),这个库会调整图像的大小并使其成为1080p,然后将其放入ImageView中,节省了绘制位图所需的大量内存

  2. # 2 楼答案

    我认为你需要使用RecycleView而不是HorizontalScrollView来动态显示你的图像

  3. # 3 楼答案

    动态添加图像

    //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);
     }