首先导入基础库:
compile 'com.facebook.fresco:fresco:1.11.0'
需要加载动画时,必须再导入一个动画加载库:
compile 'com.facebook.fresco:animated-gif:1.11.0'
并且,一定要注意,一定要注意,一定要注意,这俩个版本号一定要一致,否则,会报以下错误:
E/AndroidRuntime: FATAL EXCEPTION: Thread-10
Process: com.gobest.hngh, PID: 14897
java.lang.NoSuchFieldError:
No field forceOldAnimationCode
of type Z in class
Lcom/facebook/imagepipeline/common/ImageDecodeOptions; or its superclasses (declaration of 'com.facebook.imagepipeline.common.ImageDecodeOptions' appears in /data/app/com.gobest.hngh-1/base.apk:classes3.dex)
at com.facebook.imagepipeline.animated.factory.AnimatedImageFactoryImpl.decodeGif(AnimatedImageFactoryImpl.java:84)
at com.facebook.imagepipeline.decoder.ImageDecoder.decodeGif(ImageDecoder.java:110)
at com.facebook.imagepipeline.decoder.ImageDecoder.decodeImage(ImageDecoder.java:84)
at com.facebook.imagepipeline.producers.DecodeProducer$ProgressiveDecoder.doDecode(DecodeProducer.java:194)
at com.facebook.imagepipeline.producers.DecodeProducer$ProgressiveDecoder.access$200(DecodeProducer.java:97)
at com.facebook.imagepipeline.producers.DecodeProducer$ProgressiveDecoder$1.run(DecodeProducer.java:129)
at com.facebook.imagepipeline.producers.JobScheduler.doJob(JobScheduler.java:207)
at com.facebook.imagepipeline.producers.JobScheduler.access$000(JobScheduler.java:27)
at com.facebook.imagepipeline.producers.JobScheduler$1.run(JobScheduler.java:78)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at com.facebook.imagepipeline.core.PriorityThreadFactory$1.run(PriorityThreadFactory.java:43)
at java.lang.Thread.run(Thread.java:761)
然后,使用以下方法(两种方法,可选其中yizh一种),加载gif图片展示:
方法一:
DraweeController mDraweeController = Fresco.newDraweeControllerBuilder()
.setAutoPlayAnimations(true)
//加载drawable里的一张gif图
.setUri(Uri.parse("res://" + mContext.getPackageName() + "/" + R.mipmap.loading_gif))//设置uri
.build();
//设置Controller
drawview.setController(mDraweeController);
方法二:
Uri uri = new Uri.Builder().scheme(UriUtil.LOCAL_RESOURCE_SCHEME).path(String.valueOf(R.mipmap.loading_gif)).build();
DraweeController controller = Fresco.newDraweeControllerBuilder()
.setUri(uri)
.setAutoPlayAnimations(true)
.build();
drawview.setController(controller);