图像需要太长时间才能加载布局?

时间:2014-01-11 11:58:52

标签: android xml imageview android-imageview

我正在使用ImageView制作一个1.3 MB的图像作为活动的背景。活动有另一个较小的图像(徽标)和3个按钮。那项活动没有别的。现在此活动最多需要9秒才能显示。直到那时应用程序显示黑屏。当我使用1.3 MB图像删除ImageView时,活动立即加载。因此,ImageView加载图像需要这么长时间才是正常的吗?我怎样才能减少这段时间?

3 个答案:

答案 0 :(得分:5)

你有几个选择,但首先你必须问为什么我要加载这么大的位图?

缩小文件

正如@laalto所说,调整图像的尺寸并使其更小。可能是最快,最简单的选择。由于我无法看到图像,所以如果分辨率较小,这是不会让用户看起来与用户有任何不同。

缩小图像

下载大型图片时有大量帖子可以避免outofmemory错误。 Here是AndroidQuery团队的一个很好的例子,他们自己就已经构建了一个包含这种功能的有用library。这也包含在帖子中。

你可以使用他们的库,使用他们的帖子(或类似的)来编写一些代码,或者你可以使用Square的优秀Picasso库,尽管它可能有点过分。

如果有重复的背景......

您尚未提供图像,但如果重复图像,则可以创建图块,然后将其作为资源提供。

因此,举例来说,您可以创建一个名为background_repeat.xml的新XML文件,其中包含

<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/tile"
android:tileMode="repeat"
android:dither="true" />

其中tile是要重复的小得多的图像。

答案 1 :(得分:1)

是的,这很正常。必须对图像进行解码和缩放。它需要处理时间和内存。内存处理会不时地触发垃圾收集,从而进一步减慢进程。使用分析器确切地找出花费的时间。

使图像尺寸更小,使解码更快,消耗更少的内存。

答案 2 :(得分:0)

您可以使用android:background来设置可绘制资源的背景。您也可以在xml的根元素上执行此操作:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:id="@+id/fragment_layout"
    android:background="@drawable/navigation_bg"/>