MoudleType -> DataType
接口ModelLoader<T, Y>定义了返回实现了DataFetcher
从Uri到xxx
- 是否是本地资源协议:”file”、或”content”、或”android.resource”;如果不是,转到“从GlideUrl到xxx”;
- 如果是,看是不是Asset资源:协议是“file”、且PathSegment不为空、PathSegment的第一部分为“android_asset”;
- 如果是,先调用uri.toString()再去掉前面的“file:///android_asset/”,得到的字符串记为path;再调用assetManager.open(path)获得InputStream;或者调用assetManager.openFd(path).getParcelFileDescriptor()获得PacelFileDescriptor。
- 如果不是,调用contentResolver.openInputStream(uri)获得InputStream;或者调用contentResolver.openAssetFileDescriptor(uri, “r”).getParcelFileDescriptor()获得PacelFileDescriptor。
从File到xxx
转为“从Uri到xxx”。
从资源ID到xxx
uri = Uri.parse("android.resouce://"
+ Resource.getResourcePackageName(id) + '/'
+ Resource.getResourceTypeName(id) + '/'
+ Resource.getResourceEntryName(id));
// 然后转为“从Uri到xxx”
从String到xxx
- 如果String是以/开头,调用Uri.fromFile(new File(String))转为“从Uri到xxx”。
- 否则调用Uri.parse(String)转为“从Uri到xxx”。
从GlideUrl到InputStream 使用HttpUrlConnection下载图片。
从URL到InputStream 把URL包装为HlideUrl,转为“从GlideUrl到InputStream”。