Android中加載GIF圖片的實(shí)現(xiàn)

最近遇到Android中加載GIF圖片带迟,而Android目前還不支持GIF圖片的加載登疗。查詢后發(fā)現(xiàn)很多第三方網(wǎng)絡(luò)請(qǐng)求框架支持GIF圖片的加載碾盐。

第一種:gifView?

這個(gè)需要通過(guò)google【翻墻下載】,下載完了demo和jar包之后需要將jar包放入工程中的lib文件夾中备韧,然后添加到library中辞居。在xml問(wèn)價(jià)中填寫(xiě)布局為:

<com.ant.liao.GifView

? ? android:id="@+id/gif"

? ? android:layout_height="wrap_content"

? ? android:layout_width="wrap_content"

? ? android:paddingRight="12px" android:enabled="false"/>

使用gitView需要提前將展示GIF圖片存放到res/drawable中焙矛,最大的問(wèn)題竟然多次加載之后會(huì)導(dǎo)致OOM葫盼,所以放棄使用!

第二種:android-gif-drawable非常好的一個(gè)開(kāi)源框架

https://github.com/koral--/android-gif-drawable目前已有5.5K??村斟。

如果我們是直接從資源文件中加載GIF圖只需要贫导,將此框架導(dǎo)入項(xiàng)目中,在布局里調(diào)用就好啦蟆盹!

compile 'pl.droidsonroids.gif:android-gif-drawable:1.2.10'

布局中代碼:

<pl.droidsonroids.gif.GifImageView

? ? android:background="@drawable/loading"

? ? android:layout_gravity="center"

? ? android:layout_width="wrap_content"

? ? android:layout_height="wrap_content"/>

通過(guò)src引入或者直接background都是可以的孩灯。

public static Dialog ShowDialog(Context context){

? ? /**

? ? * 加載View

? ? */

? ? LayoutInflater inflater = LayoutInflater.from(context);

? ? View view = inflater.inflate(R.layout.activity_dialog, null);

? ? LinearLayout dialogView = (LinearLayout) view.findViewById(R.id.dialog_view);

? ? Dialog dialog = new Dialog(context,R.style.myDialogTheme);

? ? dialog.setContentView(dialogView);//dialog中加載的view示圖

? ? dialog.setCanceledOnTouchOutside(false);

? ? Window window = dialog.getWindow();

? ? WindowManager.LayoutParams layoutParams = window.getAttributes();

? ? layoutParams.width = WindowManager.LayoutParams.WRAP_CONTENT;

? ? layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;

? ? window.setGravity(Gravity.CENTER);

? ? window.setAttributes(layoutParams);

? ? dialog.show();

? ? return dialog;

}

/**

* 關(guān)閉dialog

* @param mDialogUtils

*/

public static void closeDialog(Dialog mDialogUtils) {

? ? if (mDialogUtils != null && mDialogUtils.isShowing()) {

? ? ? ? mDialogUtils.dismiss();

? ? }

這里創(chuàng)建了一個(gè)DialogUtil工具類,里面創(chuàng)建一個(gè)自定義的Dialog逾滥,在MainActivity中

case R.id.other_main:

? ? mDialog = DialogUtils.ShowDialog(MainActivity.this);

? ? mHandler.sendEmptyMessageDelayed(1, 5000);

? ? break;

通過(guò)Handler來(lái)進(jìn)行實(shí)現(xiàn)Dialog5秒后關(guān)閉峰档。

case 1:

? ? DialogUtils.closeDialog(mDialog);

? ? break;

第三種:使用網(wǎng)絡(luò)圖片加載框架,這里我們以Glide為例:

同樣的自定義一個(gè)Dialog

public static Dialog GildeImage(Context context){

? ? ? ? LayoutInflater inflater = LayoutInflater.from(context);

? ? ? ? View view = inflater.inflate(R.layout.gidle_dialog, null);

? ? ? ? LinearLayout dialogView_ll = (LinearLayout) view.findViewById(R.id.gilde_ll);

? ? ? ? Dialog dialog = new Dialog(context,R.style.myDialogTheme);

? ? ? ? dialog.setContentView(dialogView_ll);//dialog中加載的view示圖

? ? ? ? dialog.setCanceledOnTouchOutside(false);

? ? ? ? /**

? ? ? ? * gilde直接加載本地GIF圖片

? ? ? ? */

? ? ? ? ImageView glide_img = (ImageView) dialog.findViewById(R.id.gilde_img);

? ? ? ? /**

? ? ? ? * gif圖渲染完成之前寨昙,可以默認(rèn)一個(gè)比較小的圖片讥巡,但是網(wǎng)絡(luò)正常時(shí)這個(gè)等待也就200-300毫秒。所以可以忽略的毅待,

? ? ? ? 如果網(wǎng)絡(luò)很差尚卫,加載gif圖比較慢時(shí) 為了友好性 最好加載個(gè)本地的圖片作為友好提示

? ? ? ? */

? ? ? ? Glide.with(context).load(R.drawable.loading1)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .placeholder(R.mipmap.ic_launcher_round).into(glide_img);

//? ? ? ? ? ? ? ? diskCacheStrategy(DiskCacheStrategy.ALL).into(glide_img);

? ? ? ? Window window = dialog.getWindow();

? ? ? ? WindowManager.LayoutParams layoutParams = window.getAttributes();

? ? ? ? layoutParams.width = WindowManager.LayoutParams.WRAP_CONTENT;

? ? ? ? layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;

? ? ? ? window.setGravity(Gravity.CENTER);

? ? ? ? window.setAttributes(layoutParams);

? ? ? ? dialog.show();

? ? ? ? return dialog;

? ? }

這里就用到了Glide的強(qiáng)大之處:

可以直接load(url) url圖片的地址進(jìn)行網(wǎng)絡(luò)請(qǐng)求,這里需要在配置文件中聲明網(wǎng)絡(luò)請(qǐng)求的權(quán)限

<uses-permission android:name="android.permission.INTERNET"/>

這里我們演示的是直接在本地加載GIF圖片

/**

? ? ? ? * gilde直接加載本地GIF圖片

? ? ? ? */

//? ? ? ? Glide.with(context).load(R.drawable.loading1).into(glide_img);

? ? ? ? /**

? ? ? ? * gif圖渲染完成之前尸红,可以默認(rèn)一個(gè)比較小的圖片吱涉,但是網(wǎng)絡(luò)正常時(shí)這個(gè)等待也就200-300毫秒刹泄。

? ? ? ? * 所以可以忽略的,如果網(wǎng)絡(luò)很差怎爵,加載gif圖比較慢時(shí) 為了友好性 最好加載個(gè)本地的圖片作為友好提示

? ? ? ? */

? ? ? ? Glide.with(context).load(R.drawable.loading1)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .placeholder(R.mipmap.ic_launcher_round).into(glide_img);

? ? ? ? /**

? ? ? ? * 這里可以知行緩存 然后將緩存中的圖片數(shù)據(jù) 添加到glide_img空間中

? ? ? ? */

//? ? ? ? Glide.with(context).load(存放圖片的url).diskCacheStrategy(DiskCacheStrategy.ALL).into(glide_img);

項(xiàng)目地址:https://github.com/yangziling/YF_GIT.git


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末特石,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子鳖链,更是在濱河造成了極大的恐慌姆蘸,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芙委,死亡現(xiàn)場(chǎng)離奇詭異逞敷,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)灌侣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)推捐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人侧啼,你說(shuō)我怎么就攤上這事牛柒。” “怎么了痊乾?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵皮壁,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我哪审,道長(zhǎng)蛾魄,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任协饲,我火速辦了婚禮畏腕,結(jié)果婚禮上缴川,老公的妹妹穿的比我還像新娘茉稠。我一直安慰自己,他們只是感情好把夸,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布而线。 她就那樣靜靜地躺著,像睡著了一般恋日。 火紅的嫁衣襯著肌膚如雪膀篮。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,816評(píng)論 1 290
  • 那天岂膳,我揣著相機(jī)與錄音誓竿,去河邊找鬼。 笑死谈截,一個(gè)胖子當(dāng)著我的面吹牛筷屡,可吹牛的內(nèi)容都是我干的涧偷。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼毙死,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼燎潮!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起扼倘,我...
    開(kāi)封第一講書(shū)人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤确封,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后再菊,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體爪喘,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年纠拔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了腥放。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡绿语,死狀恐怖秃症,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吕粹,我是刑警寧澤种柑,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站匹耕,受9級(jí)特大地震影響聚请,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜稳其,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一驶赏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧既鞠,春花似錦煤傍、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至洒敏,卻和暖如春龄恋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背凶伙。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工郭毕, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人函荣。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓显押,卻偏偏與公主長(zhǎng)得像链韭,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子煮落,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

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