美文网首页glide
Glide-显示Gif和视频(Displaying Gifs &

Glide-显示Gif和视频(Displaying Gifs &

作者: itarbo | 来源:发表于2017-01-19 17:58 被阅读201次
    写在前面:这篇文章原著是Norman Peitek,所有著作权归原作者所有,我只是在学习Glide的时候看到有间书的作者 weiyf 写了双语的翻译,觉得非常好,但是作者只写了几篇,估计是比较忙吧。于是我就去看原博了,发现原博的英文也不会很难懂,这里只是方便学习做了翻译(顺便学英语(逃),建议英文基础还可以的同学直接看原文:https://futurestud.io/tutorials/glide-displaying-gifs-and-videos

    前几篇传送门:

    原文传送门:


    正文:

    在前面的文章我们讲了如何从各种数据源加载并显示图片,我们学习了如何改变图片:通过一些标准的方法设置图片大小、裁剪。
    本文将讲述Glide特色功能:显示Gif图片和本地视频。

    显示Gifs

    有很多图片加载框架提供了加载并显示图片的功能,但支持Gif则有点特殊,如果你的app需要这个功能,那么它非常必要。Glide加载Gif的体验让人惊叹,因为它非常简单。如果你想显示Gif,你只需要像之前那样写就可以了:

    //这动图吓我一跳 - -#
    String gifUrl = "http://i.kinja-img.com/gawker-media/image/upload/s--B7tUiM5l--/gf2r69yorbdesguga10i.gif";
    
    Glide  
        .with( context )
        .load( gifUrl )
        .into( imageViewGif );
    

    就是这么简单!这样就可以在ImageView上显示一个Gif图片了,并且它是自动播放的。更酷的是你依然可以像之前那样做一些额外的处理:

    Glide  
        .with( context )
        .load( gifUrl )
        .placeholder( R.drawable.cupcake )//加载出来前显示的图片
        .error( R.drawable.full_cake )//加载失败后显示的图片
        .into( imageViewGif );
    

    Gif Check :确保是Gif图片

    以上代码潜在的问题是:如果你的图片源存放的不是一张Gif,那么可能只是一张普通的图片,没有办法声明这种情况。Glide允许Gifs或者是普通图片作为load()方法的参数,如果开发者认为URL是一张Gif,而实际上不是的话。Glide没有办法自动检测到。因此,这里提供了另一种方法,来确保Glide请求到的是一张Gif动图 asGif():

    Glide  
        .with( context )
        .load( gifUrl )
        .asGif()
        .error( R.drawable.full_cake )//加载失败 的图片
        .into( imageViewGif );
    

    如果gifUrl指向一张Gif图片,那么万事大吉。但如果不是,那么与之前不同的是,此时Glide会认为是加载失败。那么就有一个好处,.error()方法会被回调过来,那么就会显示我们指定的 加载失败 的图片。就算gifUrl指向一张完美的图片(啥图?),只要它不是Gif动图,还是会被认为是加载失败。

    Cache Settings :缓存设置

    在大多数情况下,如果你调用了.diskCacheStrategy(DiskCacheStrategy.SOURCE),那么加载Gif的时候明显会更快:

    Glide  
        .with( context )
        .load( gifUrl )
        .asGif()
        .error( R.drawable.full_cake )
        .diskCacheStrategy(DiskCacheStrategy.SOURCE)
        .into( imageViewGif );
    
    作者:我们将在12月份出一个新的教程:讲述关于 Glide缓存 的更多的细节和背后实现;
    

    Display Gif as Bitmap:将Gif转为Bitmap显示

    如果你的app通过一个包含许多图片链接的列表(List<url>)来显示图片,那么可能会包含普通图片和Gif动图。有时候你可能想不要完整地播放整个Gif图片,如果你只想要显示Gif的第一帧画面,那么asBitmap()就可以保证作为一张普通的图片来显示,即使链接指向的是一张Gif动图。

    Glide  
        .with( context )
        .load( gifUrl )
        .asBitmap()
        .into( imageViewGifAsBitmap );
    

    以上,就是所有Glide显示Gifs图片的知识,非常简单,试试吧!

    Display of Local Videos:播放本地视频

    Gif的加强版就是视频啦,Glide同样可以显示视频文件的缩略图,并且是和视频同样长度的。假设我们通过让用户选择来获取一个视频文件的路径:

    String filePath = "/storage/emulated/0/Pictures/example_video.mp4";
    
    Glide  
        .with( context )
        .load( Uri.fromFile( new File( filePath ) ) )
        .into( imageViewGifAsBitmap );
    

    再次提醒:这只对本地视频文件有效!其他不是存储在设备上的视频(比如网络视频)是不能播放的。另外,它只会显示视频的第一帧画面。
    如果你想播放视频或者从网络链接上查看视频,那么试试这个 VideoView.(这个需要翻墙,贴一篇简书的

    Outlook:展望

    读完这篇文章,你应该可以像加载普通图片一样去加载Gif和本地视频文件了。Glide使得显示Gif图片非常流畅、方便;下一周,我们将介绍Glide的缓存机制。

    相关文章

      网友评论

      • captainary:哥们翻译一下它收费的那两篇文章呗:smile:
        captainary: @itarbo 有就不用翻译了。哈哈😄
        itarbo:哈哈,你有文章吗?我来翻译。

      本文标题:Glide-显示Gif和视频(Displaying Gifs &

      本文链接:https://www.haomeiwen.com/subject/nyiibttx.html