1

いくつかの (画像) ボタンを表示する小さな Android プロジェクトを作成しました。私の電話 (Galaxy S) では正常に動作しますが、エミュレーターで実行しようとすると、次のエラーが発生します: 原因: java.lang.OutOfMemoryError: ビットマップ サイズが VM の予算を超えています

最初のアクティビティには 8 つの画像ボタンがあり、メモリ不足の例外が発生することに注意してください。3つのボタンを外すと正常に動作します。実際には、scrollView が非表示である限り正常に動作し、それらの 3 つの削除されたボタンを追加すると (つまり、scrollView が表示されるようになります)、メモリ不足エラーが発生します。この「メモリ不足」の例外は、(画像)ボタンの数とは関係ありませんが、背景画像に関連していると思います。ここに私のXMLファイルがあります:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/rootid"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <FrameLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <ImageView
            android:id="@+id/image"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:scaleType="center"
            android:src="@drawable/backgrounmobile" />

        <ScrollView
            android:id="@+id/ScrollView01"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_gravity="left|top|bottom|right" >

            <LinearLayout
                xmlns:android="http://schemas.android.com/apk/res/android"
                android:id="@+id/centerlayout"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="right|top|bottom"
                android:layout_marginBottom="10dip"
                android:layout_marginLeft="10dip"
                android:layout_marginRight="20dip"
                android:layout_marginTop="0dip"
                android:orientation="vertical" >

                <Button
                    android:id="@+id/divan"
                    android:layout_width="160dip"
                    android:layout_height="110dip"
                    android:layout_gravity="center|top"
                    android:background="@drawable/divanbtn" />

                <Button
                    android:id="@+id/boostan"
                    android:layout_width="160dip"
                    android:layout_height="110dip"
                    android:layout_gravity="center|top"
                    android:background="@drawable/boostanbtn" />

                <Button
                    android:id="@+id/mavaez"
                    android:layout_width="160dip"
                    android:layout_height="110dip"
                    android:layout_gravity="center|top"
                    android:background="@drawable/mavaezbtn" />

                <Button
                    android:id="@+id/hekayat"
                    android:layout_width="160dip"
                    android:layout_height="110dip"
                    android:layout_gravity="center|top"
                    android:background="@drawable/hekayatbtn" />

                <Button
                    android:id="@+id/saadiname"
                    android:layout_width="160dip"
                    android:layout_height="110dip"
                    android:layout_gravity="center|top"
                    android:background="@drawable/saadinamebtn" />

                <Button
                    android:id="@+id/settings"
                    android:layout_width="160dip"
                    android:layout_height="110dip"
                    android:layout_gravity="center|top"
                    android:background="@drawable/settingsbtn" />

                <Button
                    android:id="@+id/about"
                    android:layout_width="160dip"
                    android:layout_height="110dip"
                    android:layout_gravity="center|top"
                    android:background="@drawable/aboutbtn" />
            </LinearLayout>
        </ScrollView>
    </FrameLayout>

</LinearLayout>

助けてくれませんか?

4

3 に答える 3

3

ボタンを定義するファイルのサイズ (画像のサイズではなく、ファイル サイズ) は? それらは大きすぎるようです。Android は、それらを表示するために、一度にすべてをメイン メモリにロードする必要があります。

私のアプリでは、これらのファイルはすべて 0.5 ~ 2kB の範囲にあります。

于 2012-04-15T10:11:03.513 に答える
3

メモリが不足しています。それを改善する最善の方法は、メモリの使用量を減らすことです。小さな画像を読み込むと、ここで非常に役立ちます。Google の Android チームは親切にも、これを行う方法について簡単な説明を掲載してくれました。 )

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

于 2012-04-15T10:11:11.630 に答える
1

これが役立つと思うかもしれませんhttp://mobi-solutions.blogspot.com/2010/08/how-to-if-you-want-to-create-and.html

于 2012-04-15T10:12:41.427 に答える