本篇文章给大家分享的是有关Android中怎么隔离第三方库,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
首先抽象一个ImageLoader接口
** * 图片加载器功能接口; * 添加或者替换新的图片加载器实现该接口即可 */public interface ImageLoader { /** * Init ImageLoader */ void init(Context context); /** * Show Image * * @param imageUrl * @param imageView * @param defaultImage */ void displayImage(String imageUrl, ImageView imageView, int defaultImage); }
我们当前是使用UniversalImageLoader来展示项目中的图片我们就建一个UniversalImageLoader类来实现上面的接口
public class UniversalImageLoader implements ImageLoader { private final long discCacheLimitTime = 3600 * 24 * 15L; private com.nostra13.universalimageloader.core.ImageLoader imageLoader = com.nostra13.universalimageloader.core.ImageLoader.getInstance(); @Override public void init(Context context) { if (!imageLoader.isInited()) { ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder( context) .threadPriority(Thread.NORM_PRIORITY) .denyCacheImageMultipleSizesInMemory() .memoryCache(new WeakMemoryCache()) .memoryCacheSize((2 * 1024 * 1024)) .memoryCacheSizePercentage(13) .discCacheFileNameGenerator(new Md5FileNameGenerator()) .discCache( new LimitedAgeDiskCache(StorageUtils .getCacheDirectory(context), discCacheLimitTime)) .tasksProcessingOrder(QueueProcessingType.LIFO).build(); com.nostra13.universalimageloader.core.ImageLoader.getInstance().init(config); } } @Override public void displayImage(String uri, ImageView img, int default_pic) { DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(default_pic) .showImageForEmptyUri(default_pic).showImageOnFail(default_pic) .cacheInMemory(true).cacheOnDisc(true) .bitmapConfig(Bitmap.Config.RGB_565) .displayer(new SimpleBitmapDisplayer()).build(); imageLoader.displayImage(uri, img, options); }
接下来我们写一个代理类来帮我们实现图片加载的任务
/** * 图片加载代理类,所有的图片操作都通过该代理类去实现; * 如果要改变图片加载框架,只需要在该类里替换相应的图片加载框架即可,客户端所有引用的图片操作都不需要修改 */public class ImageLoaderProxy implements ImageLoader { private ImageLoader imageLoader;//代理对象 private static ImageLoaderProxy imageLoaderProxy; public static ImageLoaderProxy getInstance() { if (imageLoaderProxy == null) { imageLoaderProxy = new ImageLoaderProxy(); } return imageLoaderProxy; } public ImageLoaderProxy() { imageLoader= new UniversalImageLoader(); } @Override public void init(Context context) { imageLoader.init(context); } @Override public void displayImage(String imageUrl, ImageView imageView, int defaultImage) { imageLoader.displayImage(imageUrl, imageView, defaultImage); } }
这样客户端所有需要显示图片的地方只需要调用代理类的图片显示方法即可 ImageLoaderProxy.getInstance().displayImage();
当老板让我们换成Picasso来完成图片加载时 ,我们只需增加一个 PicassoImageLoader类然后将代理类中的这行代码 imageLoaderProxy = new UniversalImageLoader();换成imageLoaderProxy = new PicassoImageLoader()即可。
以上就是Android中怎么隔离第三方库,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。