<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ### 加載大圖 #### 一種情況 1. 對于圖片顯示:根據需要顯示圖片控件的大小對圖片進行壓縮顯示。 2. 果圖片數量非常多:則會使用LruCache等緩存機制,將所有圖片占據的內容維持在一個范圍內 #### 另一種情況 單個圖片非常巨大,并且還不允許壓縮 首先不壓縮,按照原圖尺寸加載,那么屏幕肯定是不夠大的,并且考慮到內存的情況,不可能一次性整圖加載到內存中,所以肯定是局部加載,那么就需要用到一個類: BitmapRegionDecoder 其次,既然屏幕顯示不完,那么最起碼要添加一個上下左右拖動的手勢,讓用戶可以拖動查看。 去自定義一個顯示巨圖的View,支持用戶去拖動查看 Glide 和 Picasso 可以說是目前 Android 上最流行的圖片加載庫了。大部分安卓應用開發人員都有使用過這兩個庫在他們的開發工作中。這兩個庫也都確實提供了大量圖片加載的功能,而且也都經過了很多應用的檢驗,是可靠可信的。表面看上去似乎兩者工作原理很相似,但是實際上是有著很大差別的,主要體現在下面幾個方面: 1. 下載圖片的方式 2. 圖片的緩存機制 3. 加載到內存的機制 ### 緩存大小 兩個庫也都支持緩存圖片,都通過下載圖片后,緩存到本地。但是這里對于緩存本地的機制,兩個庫是完全不同的做法。 **Picasso** 是下載圖片然后緩存完整的大小到本地,比如說圖片的大小是1080p的,之后如果我需要同一張圖片,就會返回這張 full size 的,如果我需要resize,也是對這種 full size 的做 resize。 **Glide** 則是完全不一樣的做法。Glide 是會先下載圖片,然后改變圖片的大小,以適應 imageView 的要求,然后緩存到本地。 所以如果你是下載同一張圖片,但是設定兩個不一樣大小的 imageView, 那么Glide 實際上是會緩存兩份。 換個角度來看,這里不僅僅是緩存的問題,比如一個 ImageView 要改變它的大小,PIcasso 就只需要下載一次 full size 的圖片,但是 Glide 實際上就不僅僅是下載一次了,它需要去單獨下載然后改變大小適配 imageView,因為對于 Glide 來講,需要緩存不同大小的同一張圖片。 ### 內存的使用 Glide 默認是用的 RGB_555 的設定,PIcasso 則是用的 ARGB _8888的設定。 ### 加載圖片的時間 當嘗試加載一個圖片的時候,兩個庫都會采用先從緩存中讀取,如果緩存中沒有,再去下載的做法。 實際試驗中,Picasso 會比 Glide 快一點。猜測可能的原因還是因為之前講到的緩存機制導致,因為Picasso 是直接把圖加載到內存中,而 Glide 則需要改變圖片大小再加載到內存中去。這個應該是會耗費一定的時間。 但是,當加載圖片從內存中的時候,Glide 則比 Picasso 要快。其原理還是因為緩存機制的區別。因為Picasso 從緩存中拿到的圖片,還要先去 resize 后,然后設定給 imageView,但是 Glide 則不需要這樣。 ### 其他功能的對比 1. GIF 支持:Glide 支持 GIF。 對于加載 GIF 來說,Glide 只需要簡單使用 Glide.with(...).load(...)。 但是 Picasso 是不支持的,因此如果你的應用中是需要加載 GIF 的話,那就只能用 Glide 了。 2. 靈活性:Glide 提供了非常多的配置,你可以非常靈活的根據你的需求來客制化,從而縮減 Glide 庫的大小等。 ## Glide和Picasso他們的對比的優缺點 #### 1.Picasso和Glide的withi后面的參數不同 Picasso.with(這里只能傳入上下文) . Glide.with,后面可以傳入上下文,activity實例,FragmentActivity實例,Fragement.傳入的對象要比前者多. #### 2.加載后圖片質量不同 Picasso采用的ARGB-8888,Glide采用的是RGB-565 相對而言,Picasso加載的是全圖,圖片質量和清晰對要比Glide的要高,但是,因為加載的采樣率過高,導致,出現OOM異常的概率要比Glide要大很多. #### 3.加載Gif圖片(備注:Gif圖片消耗太對內存,盡量謹慎使用): Picasso不能加載git圖片 Glide可以加載緩存圖片 #### 4.緩存策略和加載速度. Picasso緩存的是全尺寸,而 Glide的緩存的更ImageView的尺寸相同. 講ImageView調整為不同的大小,不管大小如何設置,Picasso只緩存一個全尺寸的,Glide則不同,他會為每種大小不一致的ImageView都緩存一次. Glide的這個特點,讓加載顯得特別的快,而Picasso則因為需要在顯示之前重新調整大小而導致一些延遲,(即便是添加了noFade) #### 5.總結: Glide比Picasso加載速度要快,其實他是在Picasso的基礎上進行了第二次封裝,但是Glide比Picasso需要更多的空間來緩存;Glide加載圖像以及磁盤緩存的方式,都優于Picasso,且Glide更有利于減少OutOfMemoryError的發生; Gif動畫,是Glide的殺手锏.
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看