2016-06-21 4 views
1

Я разрабатываю приложение для Android, которое отображает изображения на весь экран пользователю. Изображения извлекаются с сервера. Я использую Glide, чтобы показать изображение. Но перед отображением фактического изображения я хочу отобразить очень маленькое размытое изображение. После того, как изображение будет кэшировано, должно отображаться изображение с полным полным размером.Android Glide: покажите размытое изображение перед загрузкой фактического изображения

Изображение Отображение потоков происходит следующим образом: - Если изображение загружено впервые, сначала загрузите небольшое масштабированное изображение, а затем загрузите изображение с полным разрешением. - Если изображение было загружено ранее, прямо показывайте полномасштабное изображение.

Я не могу найти какой-либо метод в библиотеке Glide, которые говорят мне, существует ли файл в кеше или нет.

Любая идея, как это можно сделать.

ответ

-1

BitmapFactory.Options.inSamleSize для загрузки уменьшенной версии изображения. Затем загрузите изображение большего размера и выполните переход с постепенным исчезновением, используя TransitionDrawable

Надеюсь, это поможет! Приветствия!

+0

Но в этом случае, мне нужно, чтобы загрузить большой файл, и я не буду иметь ничего, чтобы показать, пока изображение не загружено \ –

0

Используйте BitmapFactory.Options.inSampleSize, чтобы сделать уменьшенную версию изображения, и загрузите как версии. Загрузите образ образца (что займет меньше времени), и когда большая версия будет загружена, переключитесь на это. Вы также можете использовать TransitionDrawable для перехода к выцветанию.

4

Лучше вы можете получить представление об этой библиотеке или использовать эту библиотеку.

2 способа сделать размытие и оригинальное изображение на Android.

1) Первоначально загрузите URL-адрес URL-адреса Blur Image Server и один раз получите успешный механизм кэширования растровых изображений для загрузки URL-адреса исходного (большого) URL-адреса сервера изображений.

Пункт 1 возможен, я получил ответ для вас (попросите свою команду сервера получить изображение размытия или изображение низкого качества, чтобы размыть, а затем загрузить большое изображение). APK Link

Glide.with(mContext) 
    .load(image.getMedium()) 
      .asBitmap() 
      .diskCacheStrategy(DiskCacheStrategy.ALL) 
      .into(new SimpleTarget<Bitmap>() { 
       @Override 
       public void onResourceReady(Bitmap bitmap, GlideAnimation anim) { 
        // Do something with bitmap here. 
        holder.thumbnail.setImageBitmap(bitmap); 
        Log.e("GalleryAdapter","Glide getMedium "); 

        Glide.with(mContext) 
          .load(image.getLarge()) 
          .asBitmap() 
          .diskCacheStrategy(DiskCacheStrategy.ALL) 
          .into(new SimpleTarget<Bitmap>() { 
           @Override 
           public void onResourceReady(Bitmap bitmap, GlideAnimation anim) { 
            // Do something with bitmap here. 
            holder.thumbnail.setImageBitmap(bitmap); 
            Log.e("GalleryAdapter","Glide getLarge "); 
           } 
          }); 
       } 
      }); 

2) Фреска Facebook является новой библиотекой изображений для Android. Вот официальное сообщение в блоге, представляющее библиотеку. Он поддерживает потоковое воспроизведение прогрессивных изображений JPEG по сети, что может быть очень полезно для отображения больших изображений по медленным соединениям. Можно видеть, что изображение постепенно улучшается по качеству.

Progressive JPEGs with Facebook Fresco

0

это не идеальный способ, но это будет самый простой способ сделать это.

сделать placeHolder изображение как размытие и установить его в скольжение. то всегда будет отображаться размытое изображение, а затем после загрузки будет отображаться фактическое изображение.

вы можете использовать этот код для использования глиссады.

//crete this method into your Utils class and call this method wherever you want to use. 
//you can set these placeHolder() and error() image static as well. I made it as comment inside this method, then no need to use [placeHolderUrl and errorImageUrl] parameters. remove it from this method. 
public static void loadImage(final Activity context, ImageView imageView, String url, int placeHolderUrl, int errorImageUrl) { 
    if (context == null || context.isDestroyed()) return; 

    //placeHolderUrl=R.drawable.ic_user; 
    //errorImageUrl=R.drawable.ic_error; 
     Glide.with(context) //passing context 
       .load(getFullUrl(url)) //passing your url to load image. 
       .placeholder(placeHolderUrl) //this would be your default image (like default profile or logo etc). it would be loaded at initial time and it will replace with your loaded image once glide successfully load image using url. 
       .error(errorImageUrl)//in case of any glide exception or not able to download then this image will be appear . if you won't mention this error() then nothing to worry placeHolder image would be remain as it is. 
       .diskCacheStrategy(DiskCacheStrategy.ALL) //using to load into cache then second time it will load fast. 
       .animate(R.anim.fade_in) // when image (url) will be loaded by glide then this face in animation help to replace url image in the place of placeHolder (default) image. 
       .fitCenter()//this method help to fit image into center of your ImageView 
       .into(imageView); //pass imageView reference to appear the image. 
} 
3
Glide.with(context.getApplicationContext()) 
         .load(Your Path) //passing your url to load image. 
         .override(18, 18) //just set override like this 
         .error(R.drawable.placeholder) 
         .listener(glide_callback) 
         .animate(R.anim.rotate_backward) 
         .centerCrop() 
         .into(image.score); 
+0

Вы великолепны босс ... :) –

0

с Glide v4:

Glide.with(context) 
    .load(URL) 
    .thumbnail(0.1f) 
    .into(image_view) 
Смежные вопросы