我正在製作一個應用程序,它必須使用如下圖所示的40 圖片視圖,每個圖片顯示一個png文件。下面是佈局文件的XML代碼。該佈局包含圖像文件,這些圖像文件將在用戶拍攝這些照片後從相機拍攝的其他圖像視圖中替換。太多imageview; outofmemory錯誤
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/texViewAssignAlphabets"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:background="@color/LightGrey"
android:contentDescription="@string/desc_icon_image"
android:gravity="center"
android:minHeight="30dp"
android:text="@string/letter_assign"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TableLayout
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:stretchColumns="*" >
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:weightSum="6" >
<ImageView
android:id="@+id/imageViewA"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_a" />
<ImageView
android:id="@+id/imageViewB"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_b" />
<ImageView
android:id="@+id/imageViewC"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_c" />
<ImageView
android:id="@+id/imageViewD"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_d" />
<ImageView
android:id="@+id/imageViewE"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_e" />
<ImageView
android:id="@+id/imageViewF"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_f" />
</TableRow>
<TableRow
android:id="@+id/tableRow2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:weightSum="6" >
<ImageView
android:id="@+id/imageViewG"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_g" />
<ImageView
android:id="@+id/imageViewH"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_h" />
<ImageView
android:id="@+id/imageViewI"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_i" />
<ImageView
android:id="@+id/imageViewJ"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_j" />
<ImageView
android:id="@+id/imageViewK"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_k" />
<ImageView
android:id="@+id/imageViewL"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_l" />
</TableRow>
<TableRow
android:id="@+id/tableRow3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:weightSum="6" >
<ImageView
android:id="@+id/imageViewM"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_m" />
<ImageView
android:id="@+id/imageViewN"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_n" />
<ImageView
android:id="@+id/imageViewO"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_o" />
<ImageView
android:id="@+id/imageViewP"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_p" />
<ImageView
android:id="@+id/imageViewQ"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_q" />
<ImageView
android:id="@+id/imageViewR"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_r" />
</TableRow>
<TableRow
android:id="@+id/tableRow4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:weightSum="6" >
<ImageView
android:id="@+id/imageViewS"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_s" />
<ImageView
android:id="@+id/imageViewT"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_t" />
<ImageView
android:id="@+id/imageViewU"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_u" />
<ImageView
android:id="@+id/imageViewV"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_v" />
<ImageView
android:id="@+id/imageViewW"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_w" />
<ImageView
android:id="@+id/imageViewX"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_x" />
</TableRow>
<TableRow
android:id="@+id/tableRow5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:weightSum="6" >
<ImageView
android:id="@+id/imageViewY"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_y" />
<ImageView
android:id="@+id/imageViewZ"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_z" />
<ImageView
android:id="@+id/imageViewAwithDoubleDotabove"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_a_withdoubledotsabove" />
<ImageView
android:id="@+id/imageViewOWithDoubleDotAbove"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_o_withdoubledotsabove" />
<ImageView
android:id="@+id/imageViewAWithCircleAbove"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_a_circleabove" />
<ImageView
android:id="@+id/imageViewDot"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_dot" />
</TableRow>
<TableRow
android:id="@+id/tableRow6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:weightSum="6" >
<ImageView
android:id="@+id/imageViewExclaim"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_exclamation" />
<ImageView
android:id="@+id/imageViewLetterDash"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_dash" />
<ImageView
android:id="@+id/imageView0"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_0" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_1" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_2" />
<ImageView
android:id="@+id/imageView3"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_3" />
</TableRow>
<TableRow
android:id="@+id/tableRow7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:weightSum="6" >
<ImageView
android:id="@+id/imageView4"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_4" />
<ImageView
android:id="@+id/imageView5"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_5" />
<ImageView
android:id="@+id/imageView6"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_6" />
<ImageView
android:id="@+id/imageView7"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_7" />
<ImageView
android:id="@+id/imageView8"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_8" />
<ImageView
android:id="@+id/imageView9"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/letter_9" />
</TableRow>
</TableLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="15dp"
android:layout_weight="0.05"
android:background="@color/LightGrey"
android:gravity="left"
android:orientation="horizontal" >
<ImageView
android:id="@+id/imageViewPhotoJustCropped"
android:layout_width="50dp"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="5dp"
android:contentDescription="@string/desc_icon_image" />
<Button
android:id="@+id/OkButton"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dp"
android:background="@drawable/button_bg"
android:contentDescription="@string/desc_icon_image"
android:minHeight="30dp"
android:minWidth="40dp"
android:text="@string/ok_btn"
android:visibility="gone"/>
</RelativeLayout>
</LinearLayout>
問題是,當我嘗試在活動中設置此佈局。它給了我內存不足的錯誤。我知道這是因爲我使用的圖像數量龐大導致內存泄漏。我通過將圖像尺寸縮小了近50%(即,如果2kb然後縮小到1kb)來解決了這個問題。
現在的問題是這些圖像的分辨率太低,看起來不太好。如果你對如何解決這個問題有任何想法,那麼這將非常有幫助。我已經閱讀了關於處理位圖的文檔,並在stackoverflow中嘗試了一些在這裏提到的建議,但沒有任何好的結果。先謝謝你。
嘗試和使用像畢加索圖像懶惰裝載機 –
我很抱歉,但我沒有得到你的意思? – 1011
您應該更好地使用gridView並在其適配器中重新使用imageViews。 – Devrim