重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇文章给大家分享的是有关Android中怎么隔离第三方库,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
成都创新互联公司专业为企业提供金湖网站建设、金湖做网站、金湖网站设计、金湖网站制作等企业网站建设、网页设计与制作、金湖企业网站模板建站服务,10年金湖做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
首先抽象一个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中怎么隔离第三方库,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。