2016-10-20 4 views
1

Я использую Glide для загрузки изображения GIF в заставку. После завершения загрузки GIF я хочу открыть следующую операцию с помощью Intent.Открытая активность после полной загрузки GIF с использованием Glide

Я попытался ниже код,

Glide.with(this).load(R.drawable.image1).override(width, height).into(imageViewTarget); 

и Glide Версия: com.github.bumptech.glide: глиссады: 3.7.0'

Но не смог найти какую-либо помощь, пожалуйста, помогите решить это.

+0

Добавить слушатель в скольжении затем вашу другую деятельность после того, как сделано. И убедитесь, что ваш вид изображения виден, в противном случае у скольжения возникает проблема с видимостью изображения http://stackoverflow.com/questions/32503327/glide-listener-doesnt-work. – james

ответ

1

положить в обращении у слушателя это ..

 Glide.with(this) 
    .load(R.drawable.image1) 
    .asGif() 
    .override(width, height) 
       .listener(new RequestListener<String, GlideDrawable>() { 
            @Override 
            public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { 
             return false; 
            } 

            @Override 
            public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { 
             //AFTER LOAD OUT YOUR LOGIC 
             //open next activity 
             return false; 
            } 
           }) 
    .into(imageViewTarget); 

и убедитесь, что ваш ImageView всегда видна. Надеюсь, что это помогает ..

+0

он не работает. – Janak

+0

проверить отредактированный ответ. –

+0

С этой версией Glide: com.github.bumptech.glide: glide: 3.7.0 ', если я использую asGif() Это не работает. Это вызовет ошибку в коде. – Janak

1

С моей точки зрения, что вы хотите, чтобы начать другую деятельность, когда GIF Анимация закончена, а не GIF просто загрузить в ваш ImageView. В таком случае вам лучше измерить, сколько времени потребуется, чтобы закончить анимацию gif и сделать ее локальной переменной. Чтобы убедиться, что анимация gif завершена, лучше сделать время немного дольше, чем анимация расходы. Тогда сделайте это так.

long gifAnimationTime = 1000;// A bit more than the gif animation,you can ajust this to your situation. 
Glide.with(this) 
.load(R.drawable.image1) 
      .listener(new RequestListener<String, GlideDrawable>() { 
           @Override 
           public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { 
            return false; 
           } 

           @Override 
           public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { 
            new Timer().schedule(new TimerTask() { 
             @Override 
             public void run() { 
              // start your activity here. 
            } 
      },gifAnimationTime); 
            return false; 
           } 
          }) 
.into(imageViewTarget); 

я получил что-то new.Try это:

Movie movie = Movie.decodeByteArray(gifdata,offset,length); 
    long period = movie.duration(); 
+0

Нет, я не хочу предоставлять фиксированное время. Получит форму времени gif, тогда это поможет. – Janak

+0

Вам лучше знать, что gif состоит из нескольких фреймов и продолжает цикл. Нет никакого способа измерить его единственный период в android. –

+0

Если вам нужно сделать это, вы можете попытаться сделать gif на отдельные изображения с помощью ** GifSplitter **. Тогда легко создать анимацию с картинками. –