1package com.bumptech.glide.load.resource.gif; 2 3import com.bumptech.glide.Priority; 4import com.bumptech.glide.gifdecoder.GifDecoder; 5import com.bumptech.glide.load.data.DataFetcher; 6import com.bumptech.glide.load.model.ModelLoader; 7 8public class GifFrameModelLoader implements ModelLoader<GifDecoder, GifDecoder> { 9 10 @Override 11 public DataFetcher<GifDecoder> getResourceFetcher(GifDecoder model, int width, int height) { 12 return new GifFrameDataFetcher(model); 13 } 14 15 private static class GifFrameDataFetcher implements DataFetcher<GifDecoder> { 16 private GifDecoder decoder; 17 18 public GifFrameDataFetcher(GifDecoder decoder) { 19 this.decoder = decoder; 20 } 21 22 @Override 23 public GifDecoder loadData(Priority priority) throws Exception { 24 return decoder; 25 } 26 27 @Override 28 public void cleanup() { } 29 30 @Override 31 public String getId() { 32 return decoder.getId() + decoder.getCurrentFrameIndex(); 33 } 34 35 @Override 36 public void cancel() { } 37 } 38} 39