package com.example.jingbin.cloudreader.utils;
import android.content.Context;
import android.databinding.BindingAdapter;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
import com.example.jingbin.cloudreader.R;
import jp.wasabeef.glide.transformations.BlurTransformation;
/**
* Created by jingbin on 2016/11/26.
*/
public class ImgLoadUtil {
private static ImgLoadUtil instance;
private ImgLoadUtil() {
}
public static ImgLoadUtil getInstance() {
if (instance == null) {
instance = new ImgLoadUtil();
}
return instance;
}
/**
* 显示随机的图片(每日推荐)
*
* @param imgNumber 有几张图片要显示,对应默认图
* @param imageUrl 显示图片的url
* @param imageView 对应图片控件
*/
public static void displayRandom(int imgNumber, String imageUrl, ImageView imageView) {
Glide.with(imageView.getContext())
.load(imageUrl)
.placeholder(getMusicDefaultPic(imgNumber))
.error(getMusicDefaultPic(imgNumber))
.crossFade(1500)
.into(imageView);
}
private static int getMusicDefaultPic(int imgNumber) {
switch (imgNumber) {
case 1:
return R.drawable.img_two_bi_one;
case 2:
return R.drawable.img_four_bi_three;
case 3:
return R.drawable.img_one_bi_one;
}
return R.drawable.img_four_bi_three;
}
//--------------------------------------
/**
* 用于干货item,将gif图转换为静态图
*/
public static void displayGif(String url, ImageView imageView) {
Glide.with(imageView.getContext()).load(url)
.asBitmap()
.placeholder(R.drawable.img_one_bi_one)
.error(R.drawable.img_one_bi_one)
// .skipMemoryCache(true) //跳过内存缓存
// .crossFade(1000)
// .diskCacheStrategy(DiskCacheStrategy.SOURCE)// 缓存图片源文件(解决加载gif内存溢出问题)
// .into(new GlideDrawableImageViewTarget(imageView, 1));
.into(imageView);
}
/**
* 书籍、妹子图、电影列表图
* 默认图区别
*/
public static void displayEspImage(String url, ImageView imageView, int type) {
Glide.with(imageView.getContext())
.load(url)
.crossFade(500)
.placeholder(getDefaultPic(type))
.error(getDefaultPic(type))
.into(imageView);
}
private static int getDefaultPic(int type) {
switch (type) {
case 0:// 电影
return R.drawable.img_default_movie;
case 1:// 妹子
return R.drawable.img_default_meizi;
case 2:// 书籍
return R.drawable.img_default_book;
}
return R.drawable.img_default_meizi;
}
/**
* 显示高斯模糊效果(电影详情页)
*/
private static void displayGaussian(Context context, String url, ImageView imageView) {
// "23":模糊度;"4":图片缩放4倍后再进行模糊
Glide.with(context)
.load(url)
.error(R.drawable.stackblur_default)
.placeholder(R.drawable.stackblur_default)
.crossFade(500)
.bitmapTransform(new BlurTransformation(context, 23, 4))
.into(imageView);
}
/**
* 加载圆角图,暂时用到显示头像
*/
public static void displayCircle(ImageView imageView, String imageUrl) {
Glide.with(imageView.getContext())
.load(imageUrl)
.crossFade(500)
.error(R.drawable.ic_avatar_default)
.transform(new GlideCircleTransform(imageView.getContext()))
.into(imageView);
}
/**
* 妹子,电影列表图
*
* @param defaultPicType 电影:0;妹子:1; 书籍:2
*/
@BindingAdapter({"android:displayFadeImage", "android:defaultPicType"})
public static void displayFadeImage(ImageView imageView, String url, int defaultPicType) {
displayEspImage(url, imageView, defaultPicType);
}
/**
* 电影详情页显示电影图片(等待被替换)(测试的还在,已可以弃用)
* 没有加载中的图
*/
@BindingAdapter("android:showImg")
public static void showImg(ImageView imageView, String url) {
Glide.with(imageView.getContext())
.load(url)
.crossFade(500)
.error(getDefaultPic(0))
.into(imageView);
}
/**
* 电影列表图片
*/
@BindingAdapter("android:showMovieImg")
public static void showMovieImg(ImageView imageView, String url) {
Glide.with(imageView.getContext())
.load(url)
.crossFade(500)
.override((int) CommonUtils.getDimens(R.dimen.movie_detail_width), (int) CommonUtils.getDimens(R.dimen.movie_detail_height))
.placeholder(getDefaultPic(0))
.error(getDefaultPic(0))
.into(imageView);
}
/**
* 书籍列表图片
*/
@BindingAdapter("android:showBookImg")
public static void showBookImg(ImageView imageView, String url) {
Glide.with(imageView.getContext())
.load(url)
.crossFade(500)
.override((int) CommonUtils.getDimens(R.dimen.book_detail_width), (int) CommonUtils.getDimens(R.dimen.book_detail_height))
.placeholder(getDefaultPic(2))
.error(getDefaultPic(2))
.into(imageView);
}
/**
* 电影详情页显示高斯背景图
*/
@BindingAdapter("android:showImgBg")
public static void showImgBg(ImageView imageView, String url) {
displayGaussian(imageView.getContext(), url, imageView);
}
}