ImageDecode可以解码GIF文件,并使其可以显示在ImageView控件上
ImageView使用setImageResource(int id)显示GIF图仅显示初始静态图
ImageDecoder.Source imageDecoderSource = ImageDecoder.createSource( getResources() , R.drawable.~ );
Drawable imageDrawable=ImageDecoder.decodeDrawable(imageDecoderSource, new ImageDecoder.OnHeaderDecodedListener() { public void onHeaderDecoded(ImageDecoder imageDecoder , ImageDecoder.ImageInfo imageInfo , ImageDecoder.Source source) { //头文件解码解码完成时执行 //imageInfo为图片信息 if( imageInfo.getMiMeType() .equals(" image/gif "){ //图片类型为GIF } //或 if( imageInfo.isAnimated() ){ //图片为动图 } } });
imageView .setImageDrawable(imageDrawable);
((Animatable)imageView.getDrawable()) .start(); 或 ((Animatable)drawable) .start();
- Boolean isAnim=false;
- if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.P) {
-
- //获取资源
- ImageDecoder.Source imageDecoderSource= ImageDecoder.createSource(getResources(),R.drawable.giftest);
-
- try {
-
- //解码
- Drawable imageDrawable=ImageDecoder.decodeDrawable(imageDecoderSource,
- new ImageDecoder.OnHeaderDecodedListener() {
- public void onHeaderDecoded(ImageDecoder imageDecoder,ImageDecoder.ImageInfo imageInfo,ImageDecoder.Source source) {
- //头文件解码完成执行
-
- //imageInfo为图片信息
- if( imageInfo.getMimeType().equals("image/gif")){
- //图片类型为gif
- isAnim=true;
- }
- //或
- if( imageInfo.isAnimated() ){
- //图片是动图
- isAnim=true;
- }
-
- }
- });
-
- //设置
- imageView.setImageDrawable(imageDrawable);
-
- //播放
- ((Animatable)imageView.getDrawable()).start();
- //或 ((Animatable)imageDrawable).start();
-
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
-
- }