【发布时间】:2016-02-05 10:58:03
【问题描述】:
我有一个总共包含 4 张图片的活动。它们都与 1080x1920 设备的分辨率相匹配。当我使用这些图像运行活动时,这些图像通过 XML 直接加载到我的活动中,它在我的 Genymotion 模拟器中运行非常慢,而在真正的 Android 设备上运行滞后。
这是设置:
<android.support.design.widget.AppBarLayout
...>
<android.support.design.widget.CollapsingToolbarLayout
...>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="200dp"
android:orientation="vertical"
app:layout_collapseMode="parallax">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/imageView"
android:src="@drawable/shot_header"
android:scaleType="centerCrop" />
</LinearLayout>
<android.support.v7.widget.Toolbar
.../>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
第一张图片位于 CollapsingToolbar 布局中。图片的分辨率为 1080x649 PNG。
内容活动:
此图像填充父宽度。其分辨率为 1080x772 PNG。
<ImageView
android:layout_width="match_parent"
android:layout_height="250dp"
android:id="@+id/main_image"
android:layout_below="@+id/shot_error_field"
android:src="@drawable/forehand_midpng"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:layout_marginTop="15dp"/>
另外 2 张图片在 LinearLayout 中,它们的分辨率为 500x399
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/main_image">
<ImageView
android:layout_width="150dp"
android:layout_height="150dp"
android:id="@+id/imageView3"
android:src="@drawable/forehand_mid_wrong"
android:layout_weight="1"/>
<View
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_weight="1" >
</View>
<ImageView
android:layout_width="150dp"
android:layout_height="150dp"
android:id="@+id/imageView4"
android:src="@drawable/forehand_mid_wrong"
android:layout_weight="1"/>
</LinearLayout>
总而言之,我有一个包含 4 个 ImageView 的活动,其中填充了适当大小的图像,这对于现代 Android 设备应该没有问题。问题是由于高内存消耗,此活动运行非常缓慢且滞后。
难道我做错了什么?如何进一步优化这些图像?
我查看了其他线程-out of memory issue,但似乎没有人提出解决此类问题的方法。
【问题讨论】:
-
ImageView 一般不喜欢大图。
-
你试过
android:largeHeap="true"吗?这是不推荐的,但如果没有任何效果,它可能会有所帮助。 -
问题是图像分辨率..请调整大小
-
如果 ImageView 不喜欢图片,那么 Facebook 应用程序如何运行?
-
@BhaveshRangani 如何为每个设备动态调整大小?
标签: android performance imageview