Universal-Image-Loader源码阅读(28)-ImageDownloader

来源:互联网 发布:cheshenkaiche最新域名 编辑:程序博客网 时间:2024/06/05 05:41

图片加载接口。


源码:

/** * Provides retrieving of {@link InputStream} of image by URI.<br /> * Implementations have to be thread-safe. * * @author Sergey Tarasevich (nostra13[at]gmail[dot]com) * @since 1.4.0 */public interface ImageDownloader {/** * Retrieves {@link InputStream} of image by URI. * * @param imageUri Image URI * @param extra    Auxiliary object which was passed to {@link DisplayImageOptions.Builder#extraForDownloader(Object) *                 DisplayImageOptions.extraForDownloader(Object)}; can be null * @return {@link InputStream} of image * @throws IOException                   if some I/O error occurs during getting image stream * @throws UnsupportedOperationException if image URI has unsupported scheme(protocol) */InputStream getStream(String imageUri, Object extra) throws IOException;//唯一的接口函数定义/** Represents supported schemes(protocols) of URI. Provides convenient methods for work with schemes and URIs. */public enum Scheme {//我们支持的图片url类型,如果想要添加的话(ftp),可以在此添加HTTP("http"), HTTPS("https"), FILE("file"), CONTENT("content"), ASSETS("assets"), DRAWABLE("drawable"), UNKNOWN("");private String scheme;private String uriPrefix;Scheme(String scheme) {this.scheme = scheme;uriPrefix = scheme + "://";}/** * Defines scheme of incoming URI * * @param uri URI for scheme detection * @return Scheme of incoming URI */public static Scheme ofUri(String uri) {if (uri != null) {for (Scheme s : values()) {if (s.belongsTo(uri)) {return s;}}}return UNKNOWN;}private boolean belongsTo(String uri) {//判断uri的协议类型return uri.toLowerCase(Locale.US).startsWith(uriPrefix);}/** Appends scheme to incoming path */public String wrap(String path) {//获取全路径return uriPrefix + path;}/** Removed scheme part ("scheme://") from incoming URI */public String crop(String uri) {//获取剔除前缀的路径if (!belongsTo(uri)) {throw new IllegalArgumentException(String.format("URI [%1$s] doesn't have expected scheme [%2$s]", uri, scheme));}return uri.substring(uriPrefix.length());}}}


0 0
原创粉丝点击