2014-09-08 2 views
-1

Мое приложение похоже на фотоальбом. В каждом действии есть одно изображение, и я могу перейти от одного актива к другому с помощью кнопки. Фотографии, которые я использую, составляют 640x480 и не более 150 КБ. Но очень часто приложение перестает работать из-за ошибки OutOfMemory-Error. Вероятно, битмапы слишком велики. Что мне нужно добавить в мой код, чтобы эффективно добавлять большие растровые изображения? На мгновение я даже не определил битмапы в своем Java-коде. Они только в XML-коде. Я, вероятно, должен написать s.th в своем Java-коде. Но что?Eclipse Android; Растровое изображение к большому: OutOfMemory?

package com.example.xxx; 

    import android.app.Activity; 
    import android.content.Intent; 
    import android.os.Bundle; 
    import android.view.View; 

public class PictureOne extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.pictureone);} 

public void Picture0 (View view){ 
    Intent i = new Intent(this, PageZero.class);    
     startActivity(i);}} 

public void Picture2 (View view){ 
    Intent i = new Intent(this, PageTwo.class);    
     startActivity(i);}} 

XML-код:

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 



    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="200dp" 
     android:layout_height="200dp" 
     android:layout_centerInParent="true" 
     android:layout_marginLeft="14dp" 
     android:src="@drawable/pic1" /> 

    <ImageView 
     android:id="@+id/imageView4" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:src="@drawable/left" 
     android:onClick="Picture0"/> 

    <ImageView 
     android:id="@+id/imageView4" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:src="@drawable/right" 
     android:onClick="Picture2"/> 

</RelativeLayout> 
+0

Сколько битмапов? – Blackbelt

+0

25-30 Растровые изображения используются – Knacks

+0

«Что мне нужно добавить в мой код» - зависит от вашего кода. Подумайте о публикации. – 323go

ответ

0

Я считаю, что вы должны использовать универсальный загрузчик изображений по Ностра и для просмотра всего изображения нет точки суммируется до activities.You можно просто использовать вид пейджер или изображение флиппер.

+0

ok, thx, я очень новичок в этом. И этот загрузчик изображений я должен добавить в свой Java-код? – Knacks

0

Для эффективной загрузки больших растровых изображений, всего обратиться к этой статье: Loading Large Bitmaps Efficiently

Как вы можете видеть здесь:

Чтобы избежать java.lang.OutOfMemory исключения, проверьте размеры растрового изображения перед его расшифровкой, если вы не доверяете источнику, чтобы предоставить вам данные изображения с предсказуемым размером, которые удобно вписываются в доступную память.

Here - это полный раздел на Android Developers при показе растровых изображений.

Кроме того, вы можете попробовать использовать библиотеку Picasso, которая очень полезна для этого.

Смежные вопросы