0

我正在使用NestedScrollView我的布局来显示 aTextView作为标题,并使用 aHorizontalScrollView来显示可滑动的图片。
这是一个例子:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:scrollbars="none"
    android:layout_weight="1">


    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">


        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/colorPrimary"
            android:textStyle="bold"
            android:text="Cable Crunches"
            android:id="@+id/cableCrunches"
            android:gravity="center"
            android:padding="3dp"
            android:textSize="18sp"/>

        <HorizontalScrollView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/cableCrunches"
            android:id="@+id/cableCrunchesPics">

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/cableCrunchesPics1"
                    android:src="@drawable/cable_crunches_1"/>

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/cableCrunchesPics2"
                    android:src="@drawable/cable_crunches_2"/>

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/cableCrunchesPics3"
                    android:src="@drawable/cable_crunches_3"/>

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/cableCrunchesPics4"
                    android:src="@drawable/cable_crunches_4"/>

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/cableCrunchesPics5"
                    android:src="@drawable/cable_crunches_5"/>

            </LinearLayout>
        </HorizontalScrollView>

    </RelativeLayout>

</android.support.v4.widget.NestedScrollView>

和块在我的布局中使用TextViewHorizontalScrollView大约 15 次,在这种设计中,我遇到了 OutOfMemoryError。
当我使用较少的这些块时,不会出现错误。

我试图最小化我的 PNG 文件的大小,但这并不能解决问题。
有没有其他我可以使用的布局不是ImageView在应用程序开始时加载的?

4

3 回答 3

2

您需要将RecyclerViewListViewImageViewas row item 一起使用,而不是HorizontalScrollView. RecyclerView将创建足够ImageView的 s 来填充屏幕。当用户滚动时,它将重用现有ImageView的 's.

还可以考虑使用图像加载库来异步加载图像。GlidePicasso是非常好的图书馆。

于 2015-12-21T13:22:16.310 回答
0

您可以使用库来加载图像。我最喜欢的是 Glide,它使用起来很简单https://github.com/bumptech/glide

因此,您将以编程方式加载图像。您还可以更好地控制加载图像的方式、时间和地点。Glide 还解决了我的 App 中的一些内存问题。

于 2015-12-21T13:20:47.453 回答
0

在应用程序标记的清单中添加此行

 android:largeHeap="true"

也许这会帮助你

是的,就像其他人说的那样。您可以使用不同的库来加载图像。我会推荐通用图像加载器。关联

于 2015-12-21T13:13:28.773 回答