Android ImageLoader用法總結

前言:imageloader作爲一個開源的框架被廣泛的使用,尤其對於新手而言,更是如此,本人在項目中每當用到imageloader的時候都是從網上百度然後複製粘貼,現在覺得那樣沒得意義,因此寫此博客,當作以後發覆習資料,同時稍微研究下imagelodaer內部用到的集合.


一,imageloader,ImageLoaderConfiguration和DisplayImageOptions之間的關係

imagelodaer是加載圖片的對象,這個對象裏面封裝了一系列加載圖方,如displayImage()方法,load()方法。imageloaderconfiguration 顧名思義是imageloader的配置對象,該對象中有一系列方法來設置下載下來的圖片的大小,緩存的位置,緩存的大小等方法.DisplayImageOptions是加載圖片時候設置屬性,例如設置加載失敗之後的圖片,加載中的圖片,該圖片是否保存在緩存中,是否保存到文件中。缺少了DisplayImageOptions這個對象,圖片是不會緩存起來的。

## 二.代碼實現 ##

import java.io.File;
import com.example.imageloaderstudy.R;
import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;
import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.util.LruCache;
import android.widget.ImageView;

public class MainActivity extends Activity{
    String url="http://g.hiphotos.baidu.com/image/pic/item/6c224f4a20a446230761b9b79c22720e0df3d7bf.jpg";
    ImageView image;
    File path;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        setContentView(R.layout.main);
        image=(ImageView) findViewById(R.id.image);
        if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
        {
            path=Environment.getExternalStorageDirectory();
        }
        File f=new File(path.getAbsoluteFile(),"ImageLoaderCache");

        ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(this)
                .memoryCacheExtraOptions(480, 800) // maxwidth, max height,即保存的每個緩存文件的最大長寬   
                .memoryCache(new LruMemoryCache(3* 1024 * 1024))//程序內緩存
                .memoryCacheSize(3* 1024 * 1024)
                .discCacheSize(10*1024*1024)//緩存的文件大小
                .discCache(new UnlimitedDiskCache(f))//自定義緩存的文件路徑
                .build();
        DisplayImageOptions options=new DisplayImageOptions.Builder()
                .cacheOnDisk(true)
                .cacheInMemory(true)
                .build();

        ImageLoader.getInstance().init(configuration);
        ImageLoader.getInstance().displayImage(url, image,options);
        super.onCreate(savedInstanceState);
    }
}


上面代碼就是ImageLoader一般性用法,先實例化imageloaderconfiguration對象。然後通過imageloader.init(config),使imageloader設置配置信息,接着加載圖片的時候,實例化DisplayImageOptions對象,調用包含DisplayImageOptions對象的加載方法,就能將圖片緩存起來.


注意:要加入倆個權限:
uses-permission android:name=”android.permission.MOUNT_UNMOUNT_FILESYSTEMS”
uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE”

有的時候需要把項目中的一些圖片加到ImageLoader裏面緩存起來這個時候只需要調用如下的方法,通過put或者save方法就可以將自己想要緩存的圖片緩存起來.

@Override
public void onLoadingComplete(String arg0, View arg1, Bitmap arg2) {
ImageLoader.getInstance().getDiscCache();//獲取文件存儲的cache對象
ImageLoader.getInstance().getMemoryCache();//獲取應用中的cache對象  
}   
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章