下面列出了怎么用com.bumptech.glide.load.resource.bitmap.GlideBitmapDrawable的API类实例代码及写法,或者点击链接到github查看源代码。
@Nullable
public File saveImage(){
Drawable drawable = getDrawable();
Bitmap bitmap = null;
if(drawable instanceof BitmapDrawable){
bitmap = ((BitmapDrawable) drawable).getBitmap();
} else if (drawable instanceof GlideDrawable){
bitmap = ((GlideBitmapDrawable)drawable.getCurrent()).getBitmap();
}
File output = new ImageSaver(getContext())
.setExternal(true)
.setDirectoryName(Configuration.DOWNLOAD_FOLDER)
.setFileName(getContext().getString(R.string.app_name) + "-" + System.currentTimeMillis() + ".jpg")
.save(bitmap);
if(output != null){
return output;
}
return null;
}
/**
* 旋转操作
*
* @param angle 旋转角度
*/
@Deprecated
private void rotation(int angle) {
Matrix matrix = new Matrix();
matrix.postRotate(angle);
Drawable drawable = mBannerImg.getDrawable();
if (drawable != null) {
Bitmap bm;
if (drawable instanceof BitmapDrawable) {
bm = ((BitmapDrawable) drawable).getBitmap();
} else if (drawable instanceof GlideBitmapDrawable) {
bm = ((GlideBitmapDrawable) drawable).getBitmap();
} else {
Drawable d = ((TransitionDrawable) drawable).getDrawable(1);
bm = ((BitmapDrawable) d).getBitmap();
}
int bW = bm.getWidth();
int bH = bm.getHeight();
Bitmap resizeBm = Bitmap.createBitmap(bm, 0, 0, bW, bH, matrix, true);
mBannerImg.setScaleType(ImageView.ScaleType.FIT_XY);
mBannerImg.setImageBitmap(resizeBm);
mBannerImg.requestLayout();
}
}
private void initEvent() {
Glide.with(BaseApplication.getAppContext())
.load(mBookInfoResponse.getImages().getLarge())
.into(iv_book_img);
tv_title.setText(mBookInfoResponse.getTitle());
ratingBar_hots.setRating(Float.valueOf(mBookInfoResponse.getRating().getAverage()) / 2);
tv_hots_num.setText(mBookInfoResponse.getRating().getAverage());
mContentView.setOnClickListener(v -> {
Bundle b = new Bundle();
b.putSerializable(BookInfoBean.serialVersionName, mBookInfoResponse);
Bitmap bitmap;
bitmap = ((GlideBitmapDrawable) (iv_book_img.getDrawable())).getBitmap();
b.putParcelable("book_img", bitmap);
Intent intent = new Intent(BaseApplication.getAppContext(), BookDetailActivity.class);
intent.putExtras(b);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
if (mContext == null) {
startActivity(intent);
return;
}
ActivityOptionsCompat options = ActivityOptionsCompat.
makeSceneTransitionAnimation(mContext, iv_book_img, "book_img");
startActivity(intent, options.toBundle());
} else {
startActivity(intent);
}
});
}
@Override
public boolean onResourceReady(GlideBitmapDrawable resource, String model, Target<GlideBitmapDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
dissProgress();
Log.d(TAG, "onResourceReady: " + isFromMemoryCache);
if (isFromMemoryCache) {
mIvShow.setAnimation(AnimationUtils.loadAnimation(mContext, R.anim.scale));
}
return false;
}
private void initEvent() {
Glide.with(UIUtils.getContext())
.load(EBookUtils.getImageUrl(tagBook.getCover()))
.into(iv_book_img);
float ratio = 0;
try {
ratio = Float.parseFloat(tagBook.getRetentionRatio()) / 20;
} catch (Exception e) {
e.printStackTrace();
}
tv_title.setText(tagBook.getTitle());
ratingBar_hots.setRating(ratio);
tv_hots_num.setText(tagBook.getLatelyFollower() + "人在追");
mContentView.setOnClickListener(v -> {
Bundle b = new Bundle();
b.putParcelable("BookDetail", tagBook);
b.putString("bookId", tagBook.getId());
Bitmap bitmap;
GlideBitmapDrawable imageDrawable = (GlideBitmapDrawable) iv_book_img.getDrawable();
if (imageDrawable != null) {
bitmap = imageDrawable.getBitmap();
b.putParcelable("book_img", bitmap);
}
Intent intent = new Intent(UIUtils.getContext(), EBookDetailActivity.class);
intent.putExtras(b);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
if (BaseActivity.activity == null) {
UIUtils.startActivity(intent);
return;
}
ActivityOptionsCompat options = ActivityOptionsCompat.
makeSceneTransitionAnimation(BaseActivity.activity, iv_book_img, "book_img");
BaseActivity.activity.startActivity(intent, options.toBundle());
} else {
UIUtils.startActivity(intent);
}
});
}
private void initEvent() {
Glide.with(UIUtils.getContext())
.load(mBookInfoResponse.getImages().getLarge())
.into(iv_book_img);
tv_title.setText(mBookInfoResponse.getTitle());
ratingBar_hots.setRating(Float.valueOf(mBookInfoResponse.getRating().getAverage()) / 2);
tv_hots_num.setText(mBookInfoResponse.getRating().getAverage());
mContentView.setOnClickListener(v -> {
Bundle b = new Bundle();
b.putSerializable(BookInfoResponse.serialVersionName, mBookInfoResponse);
Bitmap bitmap;
bitmap = ((GlideBitmapDrawable) (iv_book_img.getDrawable())).getBitmap();
b.putParcelable("book_img", bitmap);
Intent intent = new Intent(UIUtils.getContext(), BookDetailActivity.class);
intent.putExtras(b);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
if (BaseActivity.activity == null) {
UIUtils.startActivity(intent);
return;
}
ActivityOptionsCompat options = ActivityOptionsCompat.
makeSceneTransitionAnimation(BaseActivity.activity, iv_book_img, "book_img");
BaseActivity.activity.startActivity(intent, options.toBundle());
} else {
UIUtils.startActivity(intent);
}
});
}
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
if (holder instanceof BookListHolder) {
final BookInfoResponse bookInfo = bookInfoResponses.get(position);
Glide.with(mContext)
.load(bookInfo.getImages().getLarge())
.into(((BookListHolder) holder).iv_book_img);
((BookListHolder) holder).tv_book_title.setText(bookInfo.getTitle());
((BookListHolder) holder).ratingBar_hots.setRating(Float.valueOf(bookInfo.getRating().getAverage()) / 2);
((BookListHolder) holder).tv_hots_num.setText(bookInfo.getRating().getAverage());
((BookListHolder) holder).tv_book_info.setText(bookInfo.getInfoString());
((BookListHolder) holder).tv_book_description.setText("\u3000" + bookInfo.getSummary());
((BookListHolder) holder).itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bundle b = new Bundle();
b.putSerializable(BookInfoResponse.serialVersionName, bookInfo);
Bitmap bitmap;
GlideBitmapDrawable imageDrawable = (GlideBitmapDrawable) ((BookListHolder) holder).iv_book_img.getDrawable();
if (imageDrawable != null) {
bitmap = imageDrawable.getBitmap();
b.putParcelable("book_img", bitmap);
}
Intent intent = new Intent(UIUtils.getContext(), BookDetailActivity.class);
intent.putExtras(b);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
if (BaseActivity.activity == null) {
UIUtils.startActivity(intent);
return;
}
ActivityOptionsCompat options = ActivityOptionsCompat.
makeSceneTransitionAnimation(BaseActivity.activity, ((BookListHolder) holder).iv_book_img, "book_img");
BaseActivity.activity.startActivity(intent, options.toBundle());
} else {
UIUtils.startActivity(intent);
}
}
});
}
}
@Override
public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable>
animation) {
super.onResourceReady(resource, animation);
if (!autoplayGifs) {
resource.stop();
}
BadgedFourThreeImageView badgedImageView = (BadgedFourThreeImageView) getView();
if (resource instanceof GlideBitmapDrawable) {
Palette.from(((GlideBitmapDrawable) resource).getBitmap())
.clearFilters()
.generate(this);
} else if (resource instanceof GifDrawable) {
Bitmap image = ((GifDrawable) resource).getFirstFrame();
Palette.from(image).clearFilters().generate(this);
// look at the corner to determine the gif badge color
int cornerSize = (int) (56 * getView().getContext().getResources().getDisplayMetrics
().scaledDensity);
Bitmap corner = Bitmap.createBitmap(image,
image.getWidth() - cornerSize,
image.getHeight() - cornerSize,
cornerSize, cornerSize);
boolean isDark = ColorUtils.isDark(corner);
corner.recycle();
badgedImageView.setBadgeColor(ContextCompat.getColor(getView().getContext(),
isDark ? R.color.gif_badge_dark_image : R.color.gif_badge_light_image));
}
}
public static Bitmap getBitmap(GlideDrawable glideDrawable) {
if (glideDrawable instanceof GlideBitmapDrawable) {
return ((GlideBitmapDrawable) glideDrawable).getBitmap();
} else if (glideDrawable instanceof GifDrawable) {
return ((GifDrawable) glideDrawable).getFirstFrame();
}
return null;
}
@Override
public boolean onResourceReady(
GlideDrawable resource,
String model,
Target<GlideDrawable> target,
boolean isFromMemoryCache,
boolean isFirstResource) {
onBitmapReady(GlideBitmapDrawable.class.cast(resource).getBitmap());
return false;
}
Glide(Engine engine, MemoryCache memoryCache, BitmapPool bitmapPool, Context context, DecodeFormat decodeFormat, DiskCache.Factory diskCacheFactory) {
this.engine = engine;
this.bitmapPool = bitmapPool;
this.memoryCache = memoryCache;
this.decodeFormat = decodeFormat;
this.diskCacheFactory = diskCacheFactory;
loaderFactory = new GenericLoaderFactory(context);
mainHandler = new Handler(Looper.getMainLooper());
bitmapPreFiller = new BitmapPreFiller(memoryCache, bitmapPool, decodeFormat);
dataLoadProviderRegistry = new DataLoadProviderRegistry();
StreamBitmapDataLoadProvider streamBitmapLoadProvider =
new StreamBitmapDataLoadProvider(bitmapPool, decodeFormat);
dataLoadProviderRegistry.register(InputStream.class, Bitmap.class, streamBitmapLoadProvider);
FileDescriptorBitmapDataLoadProvider fileDescriptorLoadProvider =
new FileDescriptorBitmapDataLoadProvider(bitmapPool, decodeFormat);
dataLoadProviderRegistry.register(ParcelFileDescriptor.class, Bitmap.class, fileDescriptorLoadProvider);
ImageVideoDataLoadProvider imageVideoDataLoadProvider =
new ImageVideoDataLoadProvider(streamBitmapLoadProvider, fileDescriptorLoadProvider);
dataLoadProviderRegistry.register(ImageVideoWrapper.class, Bitmap.class, imageVideoDataLoadProvider);
GifDrawableLoadProvider gifDrawableLoadProvider =
new GifDrawableLoadProvider(context, bitmapPool);
dataLoadProviderRegistry.register(InputStream.class, GifDrawable.class, gifDrawableLoadProvider);
dataLoadProviderRegistry.register(ImageVideoWrapper.class, GifBitmapWrapper.class,
new ImageVideoGifDrawableLoadProvider(imageVideoDataLoadProvider, gifDrawableLoadProvider, bitmapPool));
dataLoadProviderRegistry.register(InputStream.class, File.class, new StreamFileDataLoadProvider());
register(File.class, ParcelFileDescriptor.class, new FileDescriptorFileLoader.Factory());
register(File.class, InputStream.class, new StreamFileLoader.Factory());
register(int.class, ParcelFileDescriptor.class, new FileDescriptorResourceLoader.Factory());
register(int.class, InputStream.class, new StreamResourceLoader.Factory());
register(Integer.class, ParcelFileDescriptor.class, new FileDescriptorResourceLoader.Factory());
register(Integer.class, InputStream.class, new StreamResourceLoader.Factory());
register(String.class, ParcelFileDescriptor.class, new FileDescriptorStringLoader.Factory());
register(String.class, InputStream.class, new StreamStringLoader.Factory());
register(Uri.class, ParcelFileDescriptor.class, new FileDescriptorUriLoader.Factory());
register(Uri.class, InputStream.class, new StreamUriLoader.Factory());
register(URL.class, InputStream.class, new StreamUrlLoader.Factory());
register(GlideUrl.class, InputStream.class, new HttpUrlGlideUrlLoader.Factory());
register(byte[].class, InputStream.class, new StreamByteArrayLoader.Factory());
transcoderRegistry.register(Bitmap.class, GlideBitmapDrawable.class,
new GlideBitmapDrawableTranscoder(context.getResources(), bitmapPool));
transcoderRegistry.register(GifBitmapWrapper.class, GlideDrawable.class,
new GifBitmapWrapperDrawableTranscoder(
new GlideBitmapDrawableTranscoder(context.getResources(), bitmapPool)));
bitmapCenterCrop = new CenterCrop(bitmapPool);
drawableCenterCrop = new GifBitmapWrapperTransformation(bitmapPool, bitmapCenterCrop);
bitmapFitCenter = new FitCenter(bitmapPool);
drawableFitCenter = new GifBitmapWrapperTransformation(bitmapPool, bitmapFitCenter);
}
public GifBitmapWrapperDrawableTranscoder(
ResourceTranscoder<Bitmap, GlideBitmapDrawable> bitmapDrawableResourceTranscoder) {
this.bitmapDrawableResourceTranscoder = bitmapDrawableResourceTranscoder;
}
@Override
public Resource<GlideBitmapDrawable> transcode(Resource<Bitmap> toTranscode) {
GlideBitmapDrawable drawable = new GlideBitmapDrawable(resources, toTranscode.get());
return new GlideBitmapDrawableResource(drawable, bitmapPool);
}
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
if(holder instanceof BookListHolder){
final BookInfoResponse bookInfo = bookInfoResponses.get(position);
Glide.with(mContext)
.load(bookInfo.getImages().getLarge())
.into(((BookListHolder) holder).iv_book_img);
((BookListHolder) holder).tv_book_title.setText(bookInfo.getTitle());
((BookListHolder) holder).ratingBar_hots.setRating(Float.valueOf(bookInfo.getRating().getAverage()) / 2);
((BookListHolder) holder).tv_hots_num.setText(bookInfo.getRating().getAverage());
((BookListHolder) holder).tv_book_info.setText(bookInfo.getInfoString());
((BookListHolder) holder).tv_book_description.setText("\u3000" + bookInfo.getSummary());
((BookListHolder) holder).itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bundle b = new Bundle();
b.putSerializable("book_info", bookInfo);
GlideBitmapDrawable drawable = (GlideBitmapDrawable) ((BookListHolder) holder).iv_book_img.getDrawable();
Bitmap bitmap = drawable.getBitmap();
b.putParcelable("book_image", bitmap);
Intent intent = new Intent(UIUtils.getContext(), BookDetailActivity.class);
intent.putExtras(b);
//如果版本大于5.0
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
if(BaseActivity.activity == null){
UIUtils.startActivity(intent);
return;
}
ActivityOptionsCompat optionsCompat = ActivityOptionsCompat
.makeSceneTransitionAnimation(BaseActivity.activity
, ((BookListHolder) holder).iv_book_img
, "book_img");
BaseActivity.activity.startActivity(intent, optionsCompat.toBundle());
}else{
//如果版本小于5.0,直接启动,无过渡动画
UIUtils.startActivity(intent);
}
}
});
}
}
@Override public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> animation) {
super.onResourceReady(resource, animation);
callback.call(((GlideBitmapDrawable) resource).getBitmap());
}
@Override
public boolean onException(Exception e, String model, Target<GlideBitmapDrawable> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(GlideBitmapDrawable resource, String model, Target<GlideBitmapDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
dissProgress();
return false;
}
@Override
public boolean onException(Exception e, String model, Target<GlideBitmapDrawable> target, boolean isFirstResource) {
return false;
}
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
if (holder instanceof EBookListHolder) {
final BookDetail bookInfo = bookInfoResponses.get(position);
Glide.with(mContext)
.load(EBookUtils.getImageUrl(bookInfo.getCover()))
.into(((EBookListHolder) holder).iv_book_img);
((EBookListHolder) holder).tv_book_title.setText(bookInfo.getTitle());
float ratio = 0;
try {
ratio = Float.parseFloat(bookInfo.getRetentionRatio()) / 20;
} catch (Exception e) {
e.printStackTrace();
}
((EBookListHolder) holder).ratingBar_hots.setRating(ratio);
((EBookListHolder) holder).tv_hots_num.setText(bookInfo.getLatelyFollower() + "人在追");
((EBookListHolder) holder).tv_book_info.setText(bookInfo.getBookInfoString());
((EBookListHolder) holder).tv_book_description.setText("\u3000" + bookInfo.getShortIntro());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bundle b = new Bundle();
b.putParcelable("BookDetail", bookInfo);
b.putString("bookId", bookInfo.getId());
Bitmap bitmap;
GlideBitmapDrawable imageDrawable = (GlideBitmapDrawable) ((EBookListHolder) holder).iv_book_img.getDrawable();
if (imageDrawable != null) {
bitmap = imageDrawable.getBitmap();
b.putParcelable("book_img", bitmap);
}
Intent intent = new Intent(mContext, EBookDetailActivity.class);
intent.putExtras(b);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
if (BaseActivity.activity == null) {
UIUtils.startActivity(intent);
return;
}
ActivityOptionsCompat options = ActivityOptionsCompat.
makeSceneTransitionAnimation(BaseActivity.activity, ((EBookListHolder) holder).iv_book_img, "book_img");
BaseActivity.activity.startActivity(intent, options.toBundle());
} else {
UIUtils.startActivity(intent);
}
}
});
}
}
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
if(holder instanceof BookListHolder){
final BookInfoResponse bookInfo = bookInfoResponses.get(position);
Glide.with(mContext)
.load(bookInfo.getImages().getLarge())
.into(((BookListHolder) holder).iv_book_img);
((BookListHolder) holder).tv_book_title.setText(bookInfo.getTitle());
((BookListHolder) holder).ratingBar_hots.setRating(Float.valueOf(bookInfo.getRating().getAverage()) / 2);
((BookListHolder) holder).tv_hots_num.setText(bookInfo.getRating().getAverage());
((BookListHolder) holder).tv_book_info.setText(bookInfo.getInfoString());
((BookListHolder) holder).tv_book_description.setText("\u3000" + bookInfo.getSummary());
((BookListHolder) holder).itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bundle b = new Bundle();
b.putSerializable("book_info", bookInfo);
GlideBitmapDrawable drawable = (GlideBitmapDrawable) ((BookListHolder) holder).iv_book_img.getDrawable();
Bitmap bitmap = drawable.getBitmap();
b.putParcelable("book_image", bitmap);
Intent intent = new Intent(UIUtils.getContext(), BookDetailActivity.class);
intent.putExtras(b);
//如果版本大于5.0
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
if(BaseActivity.activity == null){
UIUtils.startActivity(intent);
return;
}
ActivityOptionsCompat optionsCompat = ActivityOptionsCompat
.makeSceneTransitionAnimation(BaseActivity.activity
, ((BookListHolder) holder).iv_book_img
, "book_img");
BaseActivity.activity.startActivity(intent, optionsCompat.toBundle());
}else{
//如果版本小于5.0,直接启动,无过渡动画
UIUtils.startActivity(intent);
}
}
});
}
}
@Override
public boolean onResourceReady(GlideBitmapDrawable loadedBitmap, String imageUri, Target target, boolean isFromMemoryCache, boolean isFirstResource) {
initMaskedImageView(loadedBitmap.getBitmap());
fileUtils.checkExistsFile(imageUri, loadedBitmap.getBitmap());
return false;
}