Universal-Image-Loader 加載網絡圖片 內存圖片 SD卡圖片.

使用Universal-Image-Loader加載圖片

此第三方加載圖片的優勢:

  1. 多線程下載圖片,圖片可以來源於網絡,文件系統,項目文件夾assets中以及drawable中等
  2. 支持隨意的配置ImageLoader,例如線程池,圖片下載器,內存緩存策略,硬盤緩存策略,圖片顯示選項以及其他的一些配置
  3. 支持圖片的內存緩存,文件系統緩存或者SD卡緩存
  4. 支持圖片下載過程的監聽
  5. 根據控件(ImageView)的大小對Bitmap進行裁剪,減少Bitmap佔用過多的內存
  6. 較好的控制圖片的加載過程,例如暫停圖片加載,重新開始加載圖片,一般使用在ListView,GridView中,滑動過程中暫停加載圖片,停止滑動的時候去加載圖片
  7. 提供在較慢的網絡下對圖片進行加載
正文:

1.需要配置相應的jar包(jar包百度一搜就有).

2.在Application文件裏複製以下代碼:

//創建默認的ImageLoader配置參數   加載圖片的庫.
ImageLoaderConfiguration configuration = ImageLoaderConfiguration.createDefault(this);
ImageLoader.getInstance().init(configuration);
3.添加權限:

  1.     <uses-permission android:name="android.permission.INTERNET" />  
  2.     <!-- Include next permission if you want to allow UIL to cache images on SD card -->  
  3.     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
4.配置options

DisplayImageOptions options = new DisplayImageOptions.Builder()
        .cacheInMemory(true)//是否緩存在內存中.
        .cacheOnDisk(true)//是否保存在SD卡中.
        .resetViewBeforeLoading(true)//接下來三行代碼最好有,不然用在listview會有複用問題.
        .displayer(new SimpleBitmapDisplayer())
        .handler(new Handler())
        .build();
5.加載圖片代碼.

ImageLoader.getInstance().displayImage(list.get(position - 1), datas.get(position - 1),
        options, new ImageLoadingListener() {//第一個參數爲圖片地址,第二個爲控件ID.
            @Override
            public void onLoadingStarted(String s, View view) {

            }

            @Override
            public void onLoadingFailed(String s, View view, FailReason failReason) {

            }

            @Override
            public void onLoadingComplete(String s, View view, Bitmap bitmap) {
                datas.get(position - 1).setImageBitmap(bitmap);//在此設置相應邏輯
                progressBar.setVisibility(View.GONE);//關閉加載進度條.
            }

            @Override
            public void onLoadingCancelled(String s, View view) {

            }
        },
        new ImageLoadingProgressListener() {
            @Override
            public void onProgressUpdate(String s, View view, int i, int i1) {
                progressBar.setVisibility(View.VISIBLE);//開啓加載進度條.
            }
        });
6.參考文章地址(此文更詳細)

http://blog.csdn.net/xiaanming/article/details/26810303/

7.在listview中出現複用問題參考文章(主要是68樓的哥們的意見)

http://www.eoeandroid.com/thread-541113-5-1.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章