以下源码分析基于Glide 4.12.0版本分析
官方文档中文版:muyangmin.github.io/glide-docs-…
本篇内容是列出注册表中主要的关系图,用于辅助DecodeHelper分析之用。
ModelLoaderRegistry关系图
modelClass | dataClass | Factory |
|---|---|---|
Bitmap | Bitmap | UnitModelLoader.Factory |
GifDecoder | GifDecoder | UnitModelLoader.Factory |
File | ByteBuffer | ByteBufferFileLoader.Factory |
File | InputStream | FileLoader.StreamFactory |
File | ParcelFileDescriptor | FileLoader.FileDescriptorFactory |
File | File | UnitModelLoader.Factory |
int | InputStream | ResourceLoader.StreamFactory |
int | ParcelFileDescriptor | ResourceLoader.FileDescriptorFactory |
Integer | InputStream | ResourceLoader.StreamFactory |
Integer | ParcelFileDescriptor | ResourceLoader.FileDescriptorFactory |
Integer | Uri | ResourceLoader.UriFactory |
int | AssetFileDescriptor | ResourceLoader.AssetFileDescriptorFactory |
Integer | AssetFileDescriptor | ResourceLoader.AssetFileDescriptorFactory |
int | Uri | ResourceLoader.UriFactory |
String | InputStream | DataUrlLoader.StreamFactory |
Uri | InputStream | DataUrlLoader.StreamFactory |
String | InputStream | StringLoader.StreamFactory |
String | ParcelFileDescriptor | StringLoader.FileDescriptorFactory |
String | AssetFileDescriptor | StringLoader.AssetFileDescriptorFactory |
Uri | InputStream | AssetUriLoader.StreamFactory |
Uri | ParcelFileDescriptor | AssetUriLoader.FileDescriptorFactory |
Uri | InputStream | MediaStoreImageThumbLoader.Factory |
Uri | InputStream | MediaStoreVideoThumbLoader.Factory |
Uri | InputStream | UriLoader.StreamFactory |
Uri | ParcelFileDescriptor | UriLoader.FileDescriptorFactory |
Uri | AssetFileDescriptor | UriLoader.AssetFileDescriptorFactory |
Uri | InputStream | UrlUriLoader.StreamFactory |
URL | InputStream | UrlLoader.StreamFactory |
Uri | File | MediaStoreFileLoader.Factory |
GlideUrl | InputStream | HttpGlideUrlLoader.Factory |
byte[] | ByteBuffer | ByteArrayLoader.ByteBufferFactory |
byte[] | InputStream | ByteArrayLoader.StreamFactory |
Uri | Uri | UnitModelLoader.Factory |
Drawable | Drawable | UnitModelLoader.Factory |
ResourceDecoderRegistry关系图
key | dataClass | resourceClass | decode |
|---|---|---|---|
legacy_append | Uri | Drawable | ResourceDrawableDecoder |
Uri | Bitmap | ResourceBitmapDecoder | |
File | File | FileDecoder | |
Drawable | Drawable | UnitDrawableDecoder | |
ByteBuffer | Bitmap | VideoDecoder | |
ByteBuffer | BitmapDrawable | BitmapDrawableDecoder | |
Bitmap | ByteBuffer | Bitmap | ByteBufferBitmapDecoder |
InputStream | Bitmap | StreamBitmapDecoder | |
ParcelFileDescriptor | Bitmap | ParcelFileDescriptorBitmapDecoder | |
ParcelFileDescriptor | Bitmap | VideoDecoder | |
AssetFileDescriptor | Bitmap | VideoDecoder | |
Bitmap | Bitmap | UnitBitmapDecoder | |
GifDecoder | Bitmap | GifFrameResourceDecoder | |
Gif | InputStream | GifDrawable | StreamGifDecoder |
ByteBuffer | GifDrawable | ByteBufferGifDecoder | |
BitmapDrawable | ByteBuffer | BitmapDrawable | BitmapDrawableDecoder |
InputStream | BitmapDrawable | BitmapDrawableDecoder | |
ParcelFileDescriptor | BitmapDrawable | BitmapDrawableDecoder |
TranscoderRegistry关系图
这里注意,如果toClass是fromClass的父类,也成立。toClass类型也可能是fromClass的类型
fromClass | toClass | transcoder |
|---|---|---|
Bitmap | BitmapDrawable | BitmapDrawableTranscoder |
Bitmap | byte[] | BitmapBytesTranscoder |
Drawable | byte[] | DrawableBytesTranscoder |
GifDrawable | byte[] | GifDrawableBytesTranscoder |
ResourceEncoderRegistry关系图
resourceClass | encoder |
|---|---|
Bitmap | BitmapEncoder |
BitmapDrawable | BitmapDrawableEncoder |
GifDrawable | GifDrawableEncoder |
EncoderRegistry关系图
dataClass | encoder |
|---|---|
ByteBuffer | ByteBufferEncoder |
InputStream | StreamEncoder |
Transformation关系图
准确来说这不是注册表的东西,是手动添加的关系,而且不一定有。
resourceClass | Transformation |
|---|---|
GifDrawable | GifDrawableTransformation |
BitmapDrawable | DrawableTransformation |
Drawable | DrawableTransformation |
Bitmap | FitCenter(不是固定的) |
如果本文对您有帮助,请多多发表您的评论以及收藏或关注。
以上全部源码以及说明都是由本人亲自码出来的,请各位看官尊重劳动成果,切勿在本人未允许的情况下转载。如已经本人同意转载,请标明文章来源,附带原文链接。
有兴趣探讨技术或者有疑问的小伙伴可以加我好友,我会在评论区回复,本人菜狗一只,如果有大佬想带我就更好了^_^。