美文网首页
Glide-图片请求优先级(request-priorities

Glide-图片请求优先级(request-priorities

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

    前几篇传送门:

    原文传送门:


    正文:

    上一周,我们讲了图片加载的一个关键:缓存! 如果你还没有看过,那么值得翻回去看看。本周,我们将了解Glide的另一个重要特性:按照优先级依次请求图片。

    Prioritizing Image Requests:设置图片请求优先级

    你经常会遇到这样的情况,你的app需要同时加载许多图片。我们假设有这样一个详情页面:页面上方有一张关键的大图和两张稍小一些的图,页面底部还有一些不那么重要的图片。 对于一个良好用户体验来说,上方的关键大图应该是最先被加载并显示的,然后再到底部那么不那么重要的ImageView。Glide通过.priority()方法结合Priority的枚举值即可按照你想要的优先级来加载图片。

    但是在我们讲例子如何使用这个方法之前,我们先来看看这些枚举值,它们是作为.priority()的参数传入的。

    Getting to know the Priority enum:优先级的枚举值

    这些枚举总共有四种,优先级按照顺序依次递增:

    • Priority.LOW
    • Priority.NORMAL
    • Priority.HIGH
    • Priority.IMMEDIATE

    在我们看例子之前,你要明白这些优先级并不是非常严格执行的。 Glide会将它们作为一个参考,在请求的时候尽量满足,并不保证所有的图片都会按照顺序来请求。

    但是,如果你确定某些图片非常重要,那么可以好好利用这个特性!

    例子: Hero Element with Child Images

    我们回到刚才提到的例子:你要实现这么一个详情页面:顶部有关键的图片,底部有一些小图。最佳的用户体验应该是:顶部的图片最先加载出来。 因此,我们给它设置Priority.HIGH优先级。理论上,这么做已经足够了。但是为了让这例子更有趣,我们让底部的图片都以.priority(Priority.LOW)优先级加载:

    private void loadImageWithHighPriority() {  
        Glide
            .with( context )
            .load( UsageExampleListViewAdapter.eatFoodyImages[0] )
            .priority( Priority.HIGH )
            .into( imageViewHero );
    }
    
    private void loadImagesWithLowPriority() {  
        Glide
            .with( context )
            .load( UsageExampleListViewAdapter.eatFoodyImages[1] )
            .priority( Priority.LOW )
            .into( imageViewLowPrioLeft );
    
        Glide
            .with( context )
            .load( UsageExampleListViewAdapter.eatFoodyImages[2] )
            .priority( Priority.LOW )
            .into( imageViewLowPrioRight );
    }
    

    如果你运行这个例子,你会发现几乎每次都是顶部的图先加载出来,尽管它比较大(那样它需要更长时间来加载)。

    Outlook:展望

    Glide提供了非常方便的方法来设置图片的优先级。这是一个快速、简单提高一些用户体验的的方法。看看你的app和你的代码,是否能运用到你刚学到的技巧吧!

    按优先级请求通常来说非常有效,但不能解决所有的问题。假设你要下载一张非常大的图片,如论你设置了什么优先级,下载和处理都要花费一定的时间。
    下一周,为了更好地提升用户体验,我们将介绍另一个Glide外的工具:thumbnails!

    相关文章

      网友评论

          本文标题:Glide-图片请求优先级(request-priorities

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