gpt4 book ai didi

android - 将可绘制对象放在彼此的前面会导致使用的内存显着增加

转载 作者:行者123 更新时间:2023-11-29 01:31:31 24 4
gpt4 key购买 nike

我的应用程序通常占用的内存约为 20MB。但是,当我将一个可绘制对象放在另一个前面时(为了使每个单独的元素都具有动画效果)...

enter image description here

这张图片中实际上有两个 drawable:绿色底座和图钉(带有阴影)

...我的内存使用量增加了 ~40MB!布局使用 xhdpi 可绘制对象,总共约有 2.1MB。这些可绘制对象的布局是:

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.2">

<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/serbia"
android:src="@drawable/serbia"
android:adjustViewBounds="true" />

<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/pin"
android:src="@drawable/pin"
android:adjustViewBounds="true"/>

</RelativeLayout>

是什么导致内存突然增加?有没有办法绕过这种做法,但仍然能够分别为图像的每个部分制作动画?

请注意,我仍然需要正确对齐这些元素(图钉不在布局的中心),因为阴影的右边缘被裁剪为底部的形状)

最佳答案

图钉和阴影可能很小,但 View 大小与布局它们时的父 View 大小相同,因此较大的 View (父 View )设置所有三个缓冲区的大小以进行绘制。所以最大的尺寸乘以 3(或四,我不知道容器实际上是如何绘制自己的)是使用的内存。我所说的最大是指屏幕格式中的最大,而不是压缩文件中的最大。

最好的办法是自己绘制它们或使用 FrameLayout 将它们堆叠起来,然后设置 x 和 y 位置...如果您可以直接在 xml 中设置 thrm,请立即不要,但如果不能,请将它们设置在别处的代码。

关于android - 将可绘制对象放在彼此的前面会导致使用的内存显着增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30922673/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com