国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

圖片加載框架之Fresco

lvzishen / 3425人閱讀

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

Fresco圖片框架簡(jiǎn)介及使用

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

一. 特性介紹 1. Image Pipeline

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

2. Drawees

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

3. 內(nèi)存管理

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

4. 圖片加載

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

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

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

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

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

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

對(duì)已下載的圖片再次處理

5. 圖片繪制

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

自定義居中焦點(diǎn)

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

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

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

指定用戶按壓時(shí)的overlay

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

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

7. Gif和Webp格式圖片的強(qiáng)大支持

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

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

二、Fresco的簡(jiǎn)單使用 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);
    }
}

注冊(cè)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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/70568.html

相關(guān)文章

  • Fresco源碼分析DraweeView

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

    draveness 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<