2016-06-08 2 views
3

я загрузил удаленное изображение, чтобы ImageView используя ниже кодandroid.graphics.drawable.TransitionDrawable не может быть приведен к com.bumptech.glide.load.resource.bitmap.GlideBitmapDrawable

Glide.with(context) 
       .load(imageUrl)     
       .placeholder(R.drawable.placeholderImage) 
       .into(holder.wallPaperImageView); 

Теперь я хочу, чтобы получить растровое изображение из ImageView

Bitmap bitmap = ((GlideBitmapDrawable)holder.wallPaperImageView.getDrawable()).getBitmap(); 

, но выше строки кода ниже бросает исключение:

java.lang.Cla ssCastException: android.graphics.drawable.TransitionDrawable не может быть приведен к com.bumptech.glide.load.resource.bitmap.GlideBitmapDrawable

Как решить эту проблему?

ответ

16

Используйте это вместо того, чтобы:

Bitmap bmp = ((GlideBitmapDrawable)holder.wallPaperImageView.getDrawable().getCurrent()).getBitmap(); 

или

Glide 
    .with(this) 
    .load(a.getAlbum_artwork()) 
    .asBitmap() 
    .into(new SimpleTarget<Bitmap>(300,300) { 
     @Override 
     public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) { 
      setBackgroundImage(resource); 
     } 
    }); 
+0

приятно 2-й способ работает .. –

+0

есть ... второй способ работал. –

0

Если вы хотите получить от изменения размера использовать это (оберег):

Glide.with(context) 
       .load(imageUrl)  
       .asBitmap() //needed for obtaining bitmap    
       .placeholder(R.drawable.placeholderImage) 
       .into(holder.wallPaperImageView); 

Тогда вы свободны получить растровое изображение:

Bitmap bitmap = ((BitmapDrawable)holder.wallPaperImageView.getDrawable()).getBitmap(); 

Работает с Glide 3.8.0

Удачи вам, '.

0

Если вы используете Glide v4

private BaseTarget target = new BaseTarget<BitmapDrawable>() { 
     @Override 
     public void onResourceReady(BitmapDrawable bitmap, Transition<? super BitmapDrawable> transition) { 
      //here is your integration by ex: activityReference.get().toolbar.setNavigationIcon(bitmap); 
     } 

     @Override 
     public void getSize(SizeReadyCallback cb) { 
      cb.onSizeReady(100, 100); 
     } 

     @Override 
     public void removeCallback(SizeReadyCallback cb) {} 
    }; 

и после

Glide.with(activityReference.get().getApplicationContext()) 
          .load(url of image) 
          .apply(new RequestOptions() 
            .placeholder(R.mipmap.img) 
            .error(R.mipmap.img) 
            .diskCacheStrategy(DiskCacheStrategy.ALL)) 
          .apply(circleCropTransform()) 
          .into(target); 

если вы предупредив 'Unchecked метод ... добавить перед методом @SuppressWarnings ("непроверенный")