减少大量图片占用的内存

时间:2018-12-18 20:33:30

标签: java android android-studio

快速说明,我不是最熟悉android API和术语的人。对不起,如果我错过名字。我的项目当前正在使用API​​ 17。

我正在开发一个具有RAL颜色图表片段的项目。该片段具有280张以上的颜色和RAL编号图像。

当您向下滚动时,RAL片段的滞后性会逐渐变差。我已经将largeHeap设置为true,但是根据我的阅读,除非必须这样做,否则您希望避免这样做。我已经将所有图像压缩了近50%,这极大地提高了性能。我会对其进行更多压缩,但是它会稍微改变颜色,这将使图表变得比现在越来越不准确。

页面的基本布局是每行三张图片

(看起来像这样)

Image1 Image2 Image3

Image4 Image5 Image6

...

Image71 Image72

(最后一行只有2个)

图像的所有代码的格式如下:

<LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="center_horizontal"
            android:orientation="horizontal"
            android:paddingTop="5dp">

            <ImageView
                android:id="@+id/imageView1000"
                android:layout_width="100dp"
                android:layout_height="100dp"
                app:srcCompat="@drawable/ral1000" />

            <ImageView
                android:id="@+id/imageView1001"
                android:layout_width="100dp"
                android:layout_height="100dp"
                app:srcCompat="@drawable/ral1001" />

            <ImageView
                android:id="@+id/imageView1002"
                android:layout_width="100dp"
                android:layout_height="100dp"
                app:srcCompat="@drawable/ral1002" />
        </LinearLayout>

我知道我的制作方法可能效率极低,但是我一直在寻找改善方法。我已经在Gridview和recylcerview上阅读了一些内容,但是我很难将它们包裹起来。我可以在其中使用include标签吗?

谢谢,非常感谢见识。

1 个答案:

答案 0 :(得分:2)

在这种情况下,<include>标签不会帮助提高性能,这很可能是因为将所有图像一次性加载到内存中,而不是像RecyclerView那样按需加载。您应该研究结合使用RecyclerViewGridLayoutManager来解决此问题。

另一个优化技巧是使用.webp https://developers.google.com/speed/webp/格式而不是.png来节省更多空间。