2016-02-26 107 views
3

我有一個GIF圖像,並希望在啓動畫面中加載。 我碰到一些庫來了,如同android-gif-drawable Glideandroid:GIF動畫循環完成監聽器

有什麼辦法,我可以聽一個動畫循環完成? 我的意思是一旦動畫週期完成(整個動畫完成,不重複)我想要一個偵聽器,動畫完成,併爲我們提供一些回調。有點像:

SomeLibrary.load("GIF") 
.into(imageview) 
.repeat(false) 
.setOnAnimationCompleteListener(new OnAnimationCompleteListener(){ 
    public void onAnimationComplete(){ 
     // Animation is completed. Do whatever you want to do.. 
    } 
}); 

我已經與這兩個庫合作但正在尋找一個功能,正如我上面提到的。

回答

1

你可以使用這個GIF庫LINK已onAnimationCompleted,當完成一個循環也稱它有讓時間方法,給出一個循環的持續時間,你可以使用任何ü要


File gifFile = new File(getFilesDir(),"anim.gif"); 
    GifDrawable gifFromFile = new GifDrawable(gifFile); 
    gifFromFile.addAnimationListener(new AnimationListener() { 
     @Override 
     public void onAnimationCompleted(int loopNumber) { 

     } 
    }); 
+0

正如我所說,我已經使用這個庫,但我沒有找到名爲'onAnimationCompleted'的方法。你能指出正確的方法名稱嗎? –

+0

@ ChintanSoni ..你有沒有找到解決方案? – BMM

2

下面是gif 1循環動畫的完整代碼。完成循環後,控制將重定向到下一個活動。

private void initGlideGifImageView() { 

    showProgressDialog("Loading image..."); 
    GlideDrawableImageViewTarget imageViewTarget = new GlideDrawableImageViewTarget(imgSafetyGif, 1); 
    Glide 
      .with(this) 
      .load(GIF_SOURCE_URL) 
      .placeholder(R.drawable.img_placeholder_1) 
      .error(R.drawable.img_error_1_280_text) 
      .diskCacheStrategy(DiskCacheStrategy.ALL) 
      .listener(new RequestListener<String, GlideDrawable>() { 

       @Override 
       public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { 
        hideProgressDialog(); 
        return false; 
       } 

       @Override 
       public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { 
        hideProgressDialog(); 

        GifDrawable gifDrawable = null; 
        Handler handler = new Handler(); 
        if (resource instanceof GifDrawable) { 
         gifDrawable = (GifDrawable) resource; 

         int duration = 0; 
         GifDecoder decoder = gifDrawable.getDecoder(); 
         for (int i = 0; i < gifDrawable.getFrameCount(); i++) { 
          duration += decoder.getDelay(i); 
         } 

         handler.postDelayed(new Runnable() { 
          @Override 
          public void run() { 
           Intent intent = new Intent(SplashScreenActivity.this, MainActivity.class); 
           startActivity(intent); 
           SplashScreenActivity.this.finish(); 
          } 
         }, (duration + 3000)); 

        } 

        return false; 
       } 

      }) 
      .into(imageViewTarget); 
} 
+0

我無法從滑翔中找到名單。 – UchihaSasuke