Skip to content

XImage第三方图片框架隔离

Spring edited this page Aug 14, 2017 · 3 revisions

1、它的产生与注意事项

在众多图片加载框架中,我们的存在是为了全局配置,方便替换。

  • 如果想使用XRecyclerViewAdapter直接加载图片链接,需要配置xImage
  • 由于Fresco是直接在布局文件使用,所以无法兼容到,Picasso,Glide,xutils等等通过代码实现的都能应用到

2、初始化 XImage 配置?

public class App extends XApplication {
    @Override
    public void onCreate() {
        super.onCreate();
       /**
         * 初始化全局图片加载框架
         * GlideImageLoader为你的图片加载框架实现类(你可以自行实现,这里就是共glide举例)
         */
        XFrame.initXImageLoader(new GlideImageLoader(getApplicationContext()));
    }
}

3、调用方法

XImage.getInstance().load(view,imageUrl);
XImage.getInstance().load(view,imageUrl,defaultImage);
XImage.getInstance().load(view,imageUrl,transformation);//加载指定形状的图片

4、自定义ImageLoader,这里用glide举例

public class GlideImageLoader implements ImageLoader {

    private Context mContext;
    //将形状的实现类放在这里,是为了更换框架时,只用修改这就行了,你也可以自己思考更优方案
    //public static GlideCircleTransform circleTransform;

    public GlideImageLoader(Context context) {
        this.mContext=context;
        //circleTransform=new GlideCircleTransform(mContext);
    }

    @Override
    public void load(ImageView imageView, Object imageUrl) {
        Glide.with(mContext)
                .load(imageUrl)
                .crossFade()
                .into(imageView);
    }

    @Override
    public void load(ImageView imageView, Object imageUrl, int defaultImage) {
        Glide.with(mContext)
                .load(imageUrl)
                .crossFade()
                .placeholder(defaultImage)
                .into(imageView);
    }

    //加载指定形状的图片,不需要留空就行了
    @Override
    public void load(ImageView imageView, Object imageUrl, Object transformation) {
        Glide.with(mContext)
                .load(imageUrl)
                .crossFade()
                 //这里需要强转成当前框架的实现类型,这里是glide举例
                .transform((BitmapTransformation) transformation)
                .into(imageView);
    }
}