成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

圖片加載框架之Fresco

lvzishen / 3428人閱讀

摘要:中設(shè)計有一個叫做模塊,它會在圖片加載完成前顯示占位圖,加載成功后自動替換為目標(biāo)圖片。當(dāng)圖片不再顯示在屏幕上時,它會及時地釋放內(nèi)存和空間占用。大的內(nèi)存占用勢必引發(fā)更加頻繁的。

Fresco圖片框架簡介及使用

Fresco是FaceBook退出了一個Android開源圖片管理框架,它提供了圖片下載、漸進(jìn)式加載、內(nèi)存管理等功能,很大程度上把程序員從繁瑣的圖片管理工作中解放了出來,官網(wǎng)地址,F(xiàn)resco API。

一. 特性介紹 1. Image Pipeline

Fresco 中設(shè)計有一個叫做 Image Pipeline 的模塊。它負(fù)責(zé)從網(wǎng)絡(luò),從本地文件系統(tǒng),本地資源加載圖片。為了最大限度節(jié)省空間和CPU時間,它含有3級緩存設(shè)計(2級內(nèi)存,1級磁盤)。

2. Drawees

Fresco 中設(shè)計有一個叫做 Drawees 模塊,它會在圖片加載完成前顯示占位圖,加載成功后自動替換為目標(biāo)圖片。當(dāng)圖片不再顯示在屏幕上時,它會及時地釋放內(nèi)存和空間占用。

3. 內(nèi)存管理

解壓后的圖片,即Android中的Bitmap,占用大量的內(nèi)存。大的內(nèi)存占用勢必引發(fā)更加頻繁的GC。在5.0以下,GC將會顯著地引發(fā)界面卡頓。
在5.0以下系統(tǒng),F(xiàn)resco將圖片放到一個特別的內(nèi)存區(qū)域。當(dāng)然,在圖片不顯示的時候,占用的內(nèi)存會自動被釋放。這會使得APP更加流暢,減少因圖片內(nèi)存占用而引發(fā)的OOM。

4. 圖片加載

Fresco的Image Pipeline允許你用很多種方式來自定義圖片加載過程,比如:

為同一個圖片指定不同的遠(yuǎn)程路徑,或者使用已經(jīng)存在本地緩存中的圖片

先顯示一個低清晰度的圖片,等高清圖下載完之后再顯示高清圖

加載完成回調(diào)通知

對于本地圖,如有EXIF縮略圖,在大圖加載完成之前,可先顯示縮略圖

縮放或者旋轉(zhuǎn)圖片

對已下載的圖片再次處理

5. 圖片繪制

Fresco 的 Drawees 設(shè)計,帶來一些有用的特性:

自定義居中焦點

圓角圖,當(dāng)然圓圈也行

下載失敗之后,點擊重現(xiàn)下載

自定義占位圖,自定義overlay, 或者進(jìn)度條

指定用戶按壓時的overlay

6. 圖片的漸進(jìn)式呈現(xiàn)

漸進(jìn)式的JPEG圖片格式已經(jīng)流行數(shù)年了,漸進(jìn)式圖片格式先呈現(xiàn)大致的圖片輪廓,然后隨著圖片下載的繼續(xù),呈現(xiàn)逐漸清晰的圖片,這對于移動設(shè)備,尤其是慢網(wǎng)絡(luò)有極大的利好,可帶來更好的用戶體驗。
Android 本身的圖片庫不支持此格式,但是Fresco支持。使用時,和往常一樣,僅僅需要提供一個圖片的URI即可,剩下的事情,F(xiàn)resco會處理。

7. Gif和Webp格式圖片的強大支持

加載Gif圖和WebP動圖在任何一個Android開發(fā)者眼里看來都是一件非常頭疼的事情。每一幀都是一張很大的Bitmap,每一個動畫都有很多幀。Fresco讓你沒有這些煩惱,它處理好每一幀并管理好你的內(nèi)存。

支持WebP解碼,即使在早先對WebP支持不完善的Android系統(tǒng)上也能正常使用!

二、Fresco的簡單使用 1. 在Gradle配置中加入Fresco的依賴
dependencies {
      compile "com.facebook.fresco:fresco:0.14.1"
}
2. 在你的Application中初始化Fresco
public class MyApplication extends Application{

    @Override
    public void onCreate() {
        super.onCreate();
        Fresco.initialize(this);
    }
}

注冊MyApplication,并配置網(wǎng)絡(luò)權(quán)限



        
            
                

                
            
        
    
3. 在布局文件中使用Fresco自定義的圖片控件SimpleDraweeView,注意引入Fresco命名空間。



    
4.在Activity使用SimpleDraweeView,設(shè)置其Uri
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        SimpleDraweeView draweeView = (SimpleDraweeView) findViewById(R.id.drawee_img);
        Uri uri = Uri.parse("http://www.people.com.cn/mediafile/pic/20161022/76/4315084153778263996.jpg");
        draweeView.setImageURI(uri);

        //initView();
    }
5.效果展示

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/70568.html

相關(guān)文章

  • Fresco源碼分析DraweeView

    摘要:首先這是對的源碼分析,所以在看這篇文章之前你應(yīng)該要有使用的基礎(chǔ),如果沒有的強烈推薦看下官方文檔。在中統(tǒng)一由來替代。關(guān)于后續(xù)文章會詳細(xì)分析。在其內(nèi)部的,是用來記錄事件的傳遞,方便的調(diào)試。這次主要是分析了中的基本組件與它的子類。 在Android中圖片加載的框架很多,例如:Fresco、Picasso、Glide與Imageloader。它們都有各自的優(yōu)點,但總的來說,使用起來方便簡單、可...

    draveness 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<