Eclipse Android;位图到大:OutOfMemory?

时间:2014-09-08 13:22:25

标签: java android eclipse bitmap

我的应用就像一张相册。在每个活动中都是一张图片,我可以通过按钮从一个活动转到下一个活动。我使用的图片是640x480,不大于150KB。但是,由于OutOfMemory-Error,应用程序经常停止工作。可能是Bitmaps太大了。我有什么要添加到我的代码中才能有效地添加大型Bitmaps?我甚至没有在我的Java代码中定义位图。它们只在XML代码中。我可能不得不在我的Java代码中写s.th.但是什么?

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-Code:

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

3 个答案:

答案 0 :(得分:0)

我相信您应该使用nostra的通用图像加载器,并且只查看图像,没有任何堆叠活动的点。您可以简单地使用查看寻呼机或图像翻转器。

答案 1 :(得分:0)

看看这个链接.. https://github.com/nostra13/Android-Universal-Image-Loader。 是的,你必须将nostra图像加载器作为一个库添加到你的android项目。

答案 2 :(得分:0)

要有效加载大型Bitmap,请参阅这篇文章: Loading Large Bitmaps Efficiently

从那里你可以看到:

  

为了避免java.lang.OutOfMemory异常,请在解码之前检查位图的尺寸,除非您完全信任该源为您提供可预测大小的图像数据,这些数据可以轻松地放入可用内存中。

Here是Android开发者关于显示位图的完整部分。

但是,您也可以尝试使用Picasso库,这对此非常有用。