将drawables放在彼此的前面导致显着的使用内存增加

时间:2015-06-18 18:09:01

标签: android performance android-layout memory memory-management

我的应用程序的常用内存占用量约为20MB。但是,当我把drawables放在另一个前面时(为了给每个元素添加动画效果)...

enter image description here

这张照片中实际上有两个绘图:绿色底座和针脚(带阴影)

...我的内存使用量增加了~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>

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

请注意,我仍然必须正确对齐这些元素(引脚不在布局的中心),因为阴影的右边缘被裁剪为基底的形状)

1 个答案:

答案 0 :(得分:1)

引脚和阴影可能很小,但视图大小与布局它们时的父级相同,因此较大的一个(父级)将所有三个缓冲区的大小设置为绘画。因此,最大尺寸乘以3(或四,我不知道容器如何实际涂漆本身)是使用的记忆。最大的我的意思是屏幕格式最大,而不是压缩文件。

最好的办法可能是自己绘制它们或者使用FrameLayout将它们叠加起来然后设置x和y possition ...如果你可以直接在xml中设置thrm,那么现在就不要,但如果没有,请将它们设置为代码在其他地方。