Android下应用程序加载图片很慢,图片太多会黑屏老半天有没解决方法?

解决方案 »

  1.   

    有效解决Android加载大图片时内存溢出的问题http://zhiweiofli.javaeye.com/blog/905066
    尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图,因为这些函数在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗更多内存。 因此,改用先通过BitmapFactory.decodeStream方法,创建出一个bitmap,再将其设为ImageView的source,decodeStream最大的秘密在于其直接调用JNI>>nativeDecodeAsset()来完成decode,无需再使用java层的createBitmap,从而节省了java层的空间。
    如果在读取时加上图片的Config参数,可以跟有效减少加载的内存,从而跟有效阻止抛out of Memory异常 
    另外,decodeStream直接拿的图片来读取字节码了, 不会根据机器的各种分辨率来自动适应, 使用了decodeStream之后,需要在hdpi和mdpi,ldpi中配置相应的图片资源, 否则在不同分辨率机器上都是同样大小(像素点数量),显示出来的大小就不对了。 
    另外,以下方式也大有帮助:
    1. InputStream is = this.getResources().openRawResource(R.drawable.pic1); 
         BitmapFactory.Options options=new BitmapFactory.Options(); 
         options.inJustDecodeBounds = false; 
         options.inSampleSize = 10;   //width,hight设为原来的十分一
         Bitmap btp =BitmapFactory.decodeStream(is,null,options); 
    2. if(!bmp.isRecycle() ){ 
             bmp.recycle()   //回收图片所占的内存 
             system.gc()  //提醒系统及时回收 
    }
    以下奉上自己写的一个方法:
      

  2.   

    Android实现异步加载图片 ListView
    http://www.congci.com/item/android-listview-load-image
      

  3.   

    直接用BMP图片是不是比PNG快点?
      

  4.   

    实例讲解Android中如何实现图片的异步加载功能
    http://blog.csdn.net/xqhrs232/archive/2010/12/22/6092289.aspx
      

  5.   

    使用android.os.AsyncTask类?显示一个圆圈的进度条?等个半天再显示?这样还是好卡的感觉!
      

  6.   

    先可以加载个简单的图片,先显示简单的图片,通过AsyncTask类在后台把所需要的图片加载完再通知主线程用新的图片去画界面!!!弄个加载开关------没加载完显示什么图片,加载完显示什么图片!!!
      

  7.   

    看到ANDROID下的很多程序都是要黑一会屏幕的,像什么愤怒的小鸟,LOAD图片也要很久很久啊!