Glide入門教程——4. 占位圖& 淡入淡出動畫

Glide — 占位圖 & 漸變動畫

原文:Placeholders & Fade Animations
作者:Norman Peitek
翻譯:Dexter0218

在學習了如何從各種圖片源中加載圖片后,這節(jié)將要學習占位圖——在實際圖片加載完成前預加載的圖片。

Glide 系列概覽

  1. 入門簡介
  2. 高級加載
  3. 適配器(ListView, GridView)
  4. 占位圖& 淡入淡出動畫
  5. 圖片大小 & 縮放
  6. 播放GIF & 視頻
  7. 緩存基礎
  8. 請求優(yōu)先級
  9. 縮略圖
  10. 回調(diào):定制view中使用SimpleTarget和ViewTarget
  11. 通知欄和桌面小控件的圖片加載
  12. 異常: 調(diào)試和報錯處理
  13. 自定義變換
  14. 用animate()定制動畫
  15. 整合網(wǎng)絡協(xié)議棧
  16. 用Modules定制Glide
  17. Glide Module 案例: 接受自簽名HTTPS證書
  18. Glide Module 案例: 自定義緩存
  19. Glide Module 案例: 通過加載自定義大小圖片優(yōu)化
  20. 動態(tài)使用 Model Loaders
  21. 如何旋轉圖片
  22. 系列綜述

我們根本沒有必要討論或解釋:空白的ImageView在任何UI中看起來都是丑陋的绽昏。如果你在使用Glide,你很可能正在從網(wǎng)絡上加載圖片商模。假如你網(wǎng)絡的環(huán)境不好憔涉,加載過程可能需要花費大量的時間遥椿。這時候就需要一個占位圖先顯示出來楣责,直到實際的圖片加載并處理完畢。

Glide的流接口讓這個工作變得很簡單坯台!只要調(diào)用.placeHolder() 炬丸,并傳遞進去一個圖片資源,Glide會顯示那個占位圖蜒蕾,直到實際圖片準備完畢稠炬。

Glide
    .with(context)
    .load(UsageExampleListViewAdapter.eatFoodyImages[0])
    .placeholder(R.mipmap.ic_launcher) // can also be a drawable
    .into(imageViewPlaceholder);

顯然,你不能設置一個網(wǎng)絡的url當作占位圖咪啡。假如那樣首启,占位圖也需要時間去下載。App內(nèi)的資源和圖片毫無疑問是可以使用的撤摸。同時毅桃,由于Glide的load()可以接受各式的參數(shù),這些參數(shù)可能是不能加載的(無網(wǎng)絡連接愁溜,服務器掛了疾嗅,等等),被刪除的或者其他無法訪問的冕象。在下一節(jié)代承,我們會介紹出錯占位圖。

出錯占位圖: .error()

我們假設我們的app嘗試從網(wǎng)頁加載一張圖片渐扮,但網(wǎng)頁不可訪問论悴,Glide會給我們選項去進行出錯的回調(diào),并采取合適的行動墓律。(選項問題以后再討論膀估,目前來說還是比較復雜的)。在大多數(shù)情況下耻讽,占位圖可以完全足夠用來表明圖片無法加載察纯。

跟之前栗子中預加載的占位圖一樣,調(diào)用Glide的流接口即可针肥,只是有命名上有點不一樣饼记,叫error():

Glide
    .with(context)
    .load("http://futurestud.io/non_existing_image.png")
    .placeholder(R.mipmap.ic_launcher) // can also be a drawable
    .error(R.mipmap.future_studio_launcher) // will be displayed if the image cannot be loaded
    .into(imageViewError);

上面的代碼中,如果從load()里傳入的圖片無法被加載慰枕,Glide會顯示R.mipmap.future_studio_launcher來代替具则。再次強調(diào)一下,error()可以接受的只能是已經(jīng)被初始化的圖片資源或者指向圖片資源的id(R.drawable.<drawable-keyword>)具帮。

crossFade()的使用

無論你是否使用占位圖博肋,對于UI來說低斋,圖片的改變是相當大的一個動作。一個簡單的方法可以讓這個變化更平滑匪凡,更讓人眼接受膊畴,這就是使用crossfade動畫。Glide支持標準的crossfade動畫病游,(對于目前版本3.6.1)是默認可用的巴比。如果你想要使用crossfade動畫,你只要在在構造器里添加另外一個調(diào)用:

Glide
    .with(context)
    .load(UsageExampleListViewAdapter.eatFoodyImages[0])
    .placeholder(R.mipmap.ic_launcher) // can also be a drawable
    .error(R.mipmap.future_studio_launcher) // will be displayed if the image cannot be loaded
    .crossFade()
    .into(imageViewFade);

crossFade()方法有另外一個特征:.crossFade(int duration),如果你想要減慢(或加快)動畫礁遵,隨便傳入一個毫秒級的時間進去感受一下。默認的動畫時間是300毫秒采记。

dontAnimate()的使用

如果你只是直接顯示圖片佣耐,而不需要crossfade效果,那就在Glide的請求構造里調(diào)用.dontAnimate():

Glide
    .with(context)
    .load(UsageExampleListViewAdapter.eatFoodyImages[0])
    .placeholder(R.mipmap.ic_launcher) // can also be a drawable
    .error(R.mipmap.future_studio_launcher) // will be displayed if the image cannot be loaded
    .dontAnimate()
    .into(imageViewFade);

你會直接看到圖片唧龄,沒有漸入的過程兼砖。請你確認你有自己的理由要這么做。

提醒你個很重要的事既棺,這些參數(shù)都是獨立的讽挟,并且設置不依賴彼此。例如丸冕,你可以只設置.error()耽梅,而不用調(diào)用.placeholder()。你可以設置crossFade()動畫胖烛,而不用設置占位圖眼姐。參數(shù)的任意結合都是可行的。

展望

很希望你能從這篇文章中理解并學到許多佩番。圖片的意外顯示對于用戶體驗來說是相當糟糕的众旗。另外,當出錯的時候趟畏,用明顯的方式告訴用戶贡歧。Glide幫助你用簡單的方法調(diào)用這些功能,讓你的app體驗更出色赋秀。

但是利朵,我們還沒有結束我們的優(yōu)化。后續(xù)沃琅,我們會學習圖片大小的調(diào)整和縮放哗咆。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市益眉,隨后出現(xiàn)的幾起案子晌柬,更是在濱河造成了極大的恐慌姥份,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件年碘,死亡現(xiàn)場離奇詭異澈歉,居然都是意外死亡,警方通過查閱死者的電腦和手機屿衅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門埃难,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人涤久,你說我怎么就攤上這事涡尘。” “怎么了响迂?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵考抄,是天一觀的道長。 經(jīng)常有香客問我蔗彤,道長川梅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任然遏,我火速辦了婚禮贫途,結果婚禮上,老公的妹妹穿的比我還像新娘待侵。我一直安慰自己丢早,他們只是感情好,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布诫给。 她就那樣靜靜地躺著香拉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪中狂。 梳的紋絲不亂的頭發(fā)上凫碌,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機與錄音胃榕,去河邊找鬼盛险。 笑死,一個胖子當著我的面吹牛勋又,可吹牛的內(nèi)容都是我干的苦掘。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼楔壤,長吁一口氣:“原來是場噩夢啊……” “哼鹤啡!你這毒婦竟也來了?” 一聲冷哼從身側響起蹲嚣,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤递瑰,失蹤者是張志新(化名)和其女友劉穎祟牲,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抖部,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡说贝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了慎颗。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乡恕。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖俯萎,靈堂內(nèi)的尸體忽然破棺而出傲宜,到底是詐尸還是另有隱情,我是刑警寧澤夫啊,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布蛋哭,位于F島的核電站,受9級特大地震影響涮母,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜躁愿,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一叛本、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧彤钟,春花似錦来候、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至梆砸,卻和暖如春转质,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背帖世。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工休蟹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人日矫。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓赂弓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親哪轿。 傳聞我的和親對象是個殘疾皇子盈魁,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容