0

NestedScrollViewレイアウトに を使用しTextViewて、 をヘッダーとして表示し、HorizontalScrollViewスライド可能な画像を表示しています。
次に例を示します。

<?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

の代わりに行アイテムとしてRecyclerViewまたはListViewを使用する必要があります。画面いっぱいに s を作成します。ユーザーがスクロールすると、既存の が再利用されます。ImageViewHorizontalScrollViewRecyclerViewImageViewImageView

また、画像読み込みライブラリを使用して画像を非同期的に読み込むことも検討してください。GlidePicassoは本当に優れたライブラリです。

于 2015-12-21T13:22:16.310 に答える
0

アプリケーションタグのマニフェストにこの行を追加します

 android:largeHeap="true"

多分これはあなたを助けるでしょう

はい、他の人が言ったように。さまざまなライブラリを使用してイメージをロードできます。Universal image Loader をお勧めします。リンク

于 2015-12-21T13:13:28.773 に答える
0

画像をロードするためにライブラリを使用できます。私のお気に入りは Glideです。 https://github.com/bumptech/glideを使用するのは簡単です。

したがって、プログラムで画像をロードします。また、画像をロードする方法、タイミング、場所をより詳細に制御できます。Glide は、私のアプリのいくつかのメモリの問題も解決しました。

于 2015-12-21T13:20:47.453 に答える