第三方圖片加載庫

一、Picasso

gradle依賴: compile'com.squareup.picasso:picasso:2.5.2'
使用非常簡單:
Picasso.with(this).load("").error(R.mipmap.ic_launcher).
        placeholder(R.mipmap.ic_launcher).
        resize(50, 50).config(Bitmap.Config.ARGB_8888).
        memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE).
        networkPolicy(NetworkPolicy.NO_CACHE).
        centerInside().into(iv);


二、Glide(支持gif)用法跟picasso差不多

studio添加依賴:
repositories {
  mavenCentral() // jcenter() works as well because it pulls from Maven Central
}

dependencies {
  compile 'com.github.bumptech.glide:glide:3.7.0'
  compile 'com.android.support:support-v4:19.1.0'
}
使用:跟Picasso類
Glide.with(this).load("file//....").
        placeholder(R.mipmap.ic_launcher).error(R.mipmap.ic_launcher).//佔位圖/加載錯誤
        override(50,50).//指定他顯示寬高
        skipMemoryCache(false).//內存緩存
        diskCacheStrategy(DiskCacheStrategy.NONE).//緩存原尺寸和各種尺寸
        centerCrop().//顯示方式/fitCenter
       into(imageView);




(一)GlideTransformation 基於Glide的圖片處理,支持各種圖片樣式


使用:
三、UniversalImageLoader
不支持compile,需下載copy到工程lib下
1.在Application初始化
創建默認的ImageLoader配置參數
File cacheDir = getImagePath();
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this)
        .memoryCacheExtraOptions(480, 800)
                // default = device screen dimensions
        .threadPoolSize(3)
                // default
        .threadPriority(Thread.NORM_PRIORITY - 1)
                // default
        .tasksProcessingOrder(QueueProcessingType.FIFO)
                // default
        .denyCacheImageMultipleSizesInMemory().memoryCache(
		new LruMemoryCache(20 * 1024 * 1024))
        .memoryCacheSize(20 * 1024 * 1024).memoryCacheSizePercentage(13)
                // default
        .diskCache(new UnlimitedDiskCache(cacheDir))
                // 自定義緩存路徑
                // default
        .diskCacheSize(80 * 1024 * 1024).diskCacheFileCount(100)
        .diskCacheFileNameGenerator(new HashCodeFileNameGenerator()) // default
        .imageDownloader(new BaseImageDownloader(this)) // default
        .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
        .writeDebugLogs().writeDebugLogs().build();
	ImageLoader.getInstance().init(config);// 全局初始化此配置

//得到實例
ImageLoader loader = ImageLoader.getInstance();

2.使用
//根據不同需求,配置他的緩存,默認圖片,圖片樣式等
DisplayImageOptions options = new DisplayImageOptions.Builder()
        .showImageOnLoading(R.mipmap.ic_launcher) // resource or drawable
        .showImageForEmptyUri(R.mipmap.ic_launcher) // resource or drawable
        .showImageOnFail(R.mipmap.ic_launcher) // resource or drawable
        .resetViewBeforeLoading(false)  // default
        .delayBeforeLoading(1000)
        .cacheInMemory(false) // default
        .cacheOnDisk(false) // default
        .considerExifParams(false) // default
        .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default
        .bitmapConfig(Bitmap.Config.ARGB_8888) // default使用RGB_565會比使用ARGB_8888少								消耗2倍的內存
        .displayer(new SimpleBitmapDisplayer()) // default -- RoundedBitmapDisplayer
        .handler(new Handler()) // default
        .build();


loader.displayImage(String url,ImageView iv,DiaplayImageOptions options);//支持異步獲得圖片
loader.loadImage(String url,ImageSize size,DisplayImageOptions options,ImageLoadingImageListener listener);
............................

有着與activity相同的生命週期,還可以取消掉具體的imageview

loader.clearDiskCache();//清除磁盤緩存
loader.clearMemoryCache();//清楚內存緩存
loader.pause();
loader.resume();
loader.stop();
loader.destroy();
loader.cancelDisplayTask(imageView);


四、Fresco
gradle: compile 'com.facebook.fresco:fresco:0.11.0'

使用:
 是基於fresco的控件加載圖片的,初始化
//最簡單的使用就是:
simpleDraweeView.setImageURI("");
控件基本屬性:
<com.facebook.drawee.view.SimpleDraweeView
    android:id="@+id/my_image_view"
    android:layout_width="20dp"   // 不支持wrap_content 如果要設置寬高比, 需要在Java代碼中指定setAspectRatio(1.33f);
    android:layout_height="20dp"    // 不支持wrap_content 
    fresco:fadeDuration="300"
    fresco:actualImageScaleType="focusCrop"
 // 設置圖片縮放. 通常使用focusCrop,該屬性值會通過算法把人頭像放在中間
    fresco:placeholderImage="@color/wait_color"
 // 下載成功之前顯示的圖片
    fresco:placeholderImageScaleType="fitCenter"
 
    fresco:failureImage="@drawable/error"
// 加載失敗的時候顯示的圖片
    fresco:failureImageScaleType="centerInside"
    fresco:retryImage="@drawable/retrying"
// 加載失敗,提示用戶點擊重新加載的圖片(會覆蓋failureImage的圖片)
    fresco:retryImageScaleType="centerCrop"
    fresco:progressBarImage="@drawable/progress_bar"// 提示用戶正在加載,和加載進度無關
    fresco:progressBarImageScaleType="centerInside"
    fresco:progressBarAutoRotateInterval="1000"
    fresco:backgroundImage="@color/blue"
    fresco:overlayImage="@drawable/watermark"
    fresco:pressedStateOverlayImage="@color/red"
    fresco:roundAsCircle="false"
// 是不是設置圓圈
    fresco:roundedCornerRadius="1dp"
// 圓角角度,180的時候會變成圓形圖片
    fresco:roundTopLeft="true"
    fresco:roundTopRight="false"
    fresco:roundBottomLeft="false"
    fresco:roundBottomRight="true"
    fresco:roundWithOverlayColor="@color/corner_color"
    fresco:roundingBorderWidth="2dp"
    fresco:roundingBorderColor="@color/border_color"
  />

增加一些設置(尺寸。類型監聽。。。)

ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.parse("")).
        setImageType(ImageRequest.ImageType.DEFAULT).
        disableDiskCache().setAutoRotateEnabled(false).setResizeOptions(
		new ResizeOptions(50, 50)).build();

DraweeController controller = Fresco.newDraweeControllerBuilder().setUri("").
        setControllerListener(controlListener).setImageRequest(request)
	.setAutoPlayAnimations(true).build();

simpleDraweeView.setController(controller);


五、XUtils
gradle: compile 'org.xutils:xutils:3.3.36'

簡單使用:
x.Ext.init(getApplication());//初始化放在application


ImageOptions options = new ImageOptions.Builder().setConfig(Bitmap.Config.RGB_565).
        setFadeIn(true).setIgnoreGif(false).setCrop(true).
        setLoadingDrawableId(0).setFailureDrawableId(0).setForceLoadingDrawable(true).
        setImageScaleType(ImageView.ScaleType.CENTER_CROP).setPlaceholderScaleType(
	ImageView.ScaleType.CENTER_CROP).
        setSize(50, 50).setRadius(5).setUseMemCache(true).setSquare(true).build();
x.image().bind(imageView, "http://...", options);

可以設置他的回調callback

關於圖片加載,還有Volley的ImageLoader...


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