如何讓你的Android顯示gif格式的圖片

轉載請註明出處:

LouisWang http://blog.csdn.net/louiswangbing/article/details/6606933

相信這個標題本身已經夠吸引人了。

這裏,首先要說明的是,希望那些已經實現了gif格式圖片顯示的朋友不要噴我,我知道你們是怎麼做的,無非兩種:一種是用原本就已經存在的gif解碼jar包,另外一種是使用google提供的開源的gif解碼包。但是這兩種方式都是在應用程序中對gif格式圖片進行解碼的,java解碼效率有多高,相信大家都很瞭解。

這裏,我要介紹一種通過修改android源代碼來實現gif格式圖片顯示的方法。

相信看過android源代碼的朋友都知道,android使用了一個十分強大的skia圖形引擎,它就潛伏在android源代碼的external目錄下。這個引擎的誕生和被google收購,具有各種傳奇色彩和神祕面紗,這裏就不詳細談了。不過百度一下,你就知道這個圖形引擎到底是有多麼的強大。

這麼強大的圖形引擎不支持gif解碼?相信說出來都不會有人相信。

沒錯,它是支持的,很明顯可以看到,在android源代碼的external目錄下有一個名爲giflib的文件夾,它就是gif解碼器,通過插件的方式加載到skia裏面,但是爲什麼應用開發的時候不能顯示gif而只能顯示一幀圖片呢?

原因是這樣的,android默認開發都是用模擬器來做的,而我上篇文章裏面也有說道,模擬器的內存資源和cpu資源都是相當有限的,僅爲256M內存,對於各種資源要求的應用和功能來說,這樣的資源顯然遠遠不夠,所以,google爲了保證它的模擬器不會“隨時死機”,對這部分的內容,悄悄的做了一點點的修改。而好巧不巧的是,這個意圖居然被鄙人發現了,更加好巧不巧的是,這個修改是在是太有吸引力了,太精妙了,引發了我強大的好奇心,於是,我一頭鑽了進去。實在是有點湊巧,這個修改還被我發現了...

接着,我修改了webkit部分源代碼(webkit關於圖形解析的部分調用了skia的實現),驚奇的發現,百度一下gif圖片,android的瀏覽器居然可以播放gif了,不過很顯然,這種超負荷的工作模擬器顯然是無法正常完成的,我使用的是我上篇文章中提到的android-x86系統做的實驗。

這樣一來,應用程序開發者就可以順利成章的使用webview類來完成gif格式圖片的顯示了。當然,在這之前,還需要做以下工作:

1、下載一份android-x86或者android的源代碼(推薦使用android-x86,這真的是個很好用也很有意思的東西,當然,如果你堅持要用模擬器,我也不攔你,甜果子不喫非挑苦的喫那是你的權利)

2、修改源代碼並編譯

如果你看了我上一篇文章並已經按照我說的步驟做了,那麼以上兩步你只需要做第二步,並且以下步驟你也不用做了,直接將編譯生成的ISO鏡像文件通過虛擬機運行起來,百度一下gif你就會看到奇蹟了。如果你很倔強,一定要使用模擬器,那麼,我也好心地給你提供接下來的解決方案:

3、編譯生成system.img、userdata.img和ramdisk.img

4、將這三個img文件替換掉你的sdk工具裏面的那三個img文件

接着運行模擬器,百度一下gif,你也會發現奇蹟,不過這個“奇蹟”相對與android-x86來說,實在是有夠慢的“奇蹟”。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章