我的应用程序的常用内存占用量约为20MB。但是,当我把drawables放在另一个前面时(为了给每个元素添加动画效果)...
这张照片中实际上有两个绘图:绿色底座和针脚(带阴影)
...我的内存使用量增加了~40MB!布局使用的是xhdpi drawables,总共大约2.1MB。这些drawables的布局是:
<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>
导致这种突然记忆增加的原因是什么?有没有办法绕过这种做法,但仍能分别为图像的每个部分制作动画?
请注意,我仍然必须正确对齐这些元素(引脚不在布局的中心),因为阴影的右边缘被裁剪为基底的形状)
答案 0 :(得分:1)
引脚和阴影可能很小,但视图大小与布局它们时的父级相同,因此较大的一个(父级)将所有三个缓冲区的大小设置为绘画。因此,最大尺寸乘以3(或四,我不知道容器如何实际涂漆本身)是使用的记忆。最大的我的意思是屏幕格式最大,而不是压缩文件。
最好的办法可能是自己绘制它们或者使用FrameLayout将它们叠加起来然后设置x和y possition ...如果你可以直接在xml中设置thrm,那么现在就不要,但如果没有,请将它们设置为代码在其他地方。