下面列出了怎么用com.bumptech.glide.load.resource.drawable.DrawableResource的API类实例代码及写法,或者点击链接到github查看源代码。
@Nullable
@Override
public Resource<Drawable> decode(@NonNull final ByteBuffer source, int width, int height, @NonNull Options options) throws IOException {
Loader loader = new ByteBufferLoader() {
@Override
public ByteBuffer getByteBuffer() {
source.position(0);
return source;
}
};
FrameAnimationDrawable drawable;
if (WebPParser.isAWebP(new ByteBufferReader(source))) {
drawable = new WebPDrawable(loader);
} else if (APNGParser.isAPNG(new ByteBufferReader(source))) {
drawable = new APNGDrawable(loader);
} else if (GifParser.isGif(new ByteBufferReader(source))) {
drawable = new GifDrawable(loader);
} else {
return null;
}
return new DrawableResource<Drawable>(drawable) {
@NonNull
@Override
public Class<Drawable> getResourceClass() {
return Drawable.class;
}
@Override
public int getSize() {
return source.limit();
}
@Override
public void recycle() {
((FrameAnimationDrawable) drawable).stop();
}
};
}
@Override public Resource<Drawable> decode(ApplicationInfo source, int width, int height) throws IOException {
Drawable icon = context.getPackageManager().getApplicationIcon(source);
return new DrawableResource<Drawable>(icon) {
@Override public int getSize() { // best effort
if (drawable instanceof BitmapDrawable) {
return Util.getBitmapByteSize(((BitmapDrawable)drawable).getBitmap());
} else {
return 1;
}
}
@Override public void recycle() { /* not from our pool */ }
};
}
@Override public Resource<Drawable> decode(Drawable source, int width, int height) throws IOException {
return new DrawableResource<Drawable>(source) {
@Override public int getSize() {
return 1;
}
@Override public void recycle() {
}
};
}