Fresco用法總結基礎篇
Fresco是Facebook最新推出的一款用於Android應用中展示圖片的強大圖片庫,可以從網路、本地儲存和本地資源中載入圖片。相對於ImageLoader,擁有更快的圖片下載速度以及可以載入和顯示gif圖等諸多優勢,是個很好的圖片框架。PS:畢竟是facebook開源的,我說差也不會有人相信,還是誇誇吧!
首先體驗其最基本的用法:
1.匯入 Android Studio 或者 Gradle
dependencies {
compile 'com.facebook.fresco:fresco:0.9.0+'
}
2、在xml中引入SimpleDraweeView
注意:1、在SimpleDraweeView的父控制元件或者根節點中配置xmlns:fresco="http://schemas.android.com/apk/res-auto";<com.facebook.drawee.view.SimpleDraweeView android:id="@+id/image_view" android:layout_width="20dp" android:layout_height="20dp" fresco:placeholderImage="@drawable/my_drawable" />
3、在Java程式碼中開始載入圖片2、配置網路許可權
Uri uri = Uri.parse("https://raw.githubusercontent.com/facebook/fresco/gh-pages/static/fresco-logo.png"); SimpleDraweeView draweeView = (SimpleDraweeView) findViewById(R.id.my_image_view); draweeView.setImageURI(uri);
OK,到這兒已經初步學會了該框架的使用。
接下來詳細研究其用法:
URIs的使用:
型別 | Scheme | 示例 |
---|---|---|
遠端圖片 | http://, https:// |
HttpURLConnection 或者參考 使用其他網路載入方案 |
本地檔案 | file:// |
FileInputStream |
Content provider | content:// |
ContentResolver |
asset目錄下的資源 | asset:// |
AssetManager |
res目錄下的資源 | res:// |
Resources.openRawResource |
res 示例:Uri uri = Uri.parse("res://包名(實際可以是任何字串甚至留空)/" + R.drawable.ic_launcher);
在XML中使用SimpleDraweeView:
給出一個完整的示例:
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/my_image_view"
android:layout_width="20dp"
android:layout_height="20dp"
fresco:fadeDuration="300"//漸進時間
fresco:actualImageScaleType="focusCrop"
fresco:placeholderImage="@color/wait_color"
fresco:placeholderImageScaleType="fitCenter"
fresco:failureImage="@drawable/error"//失敗時顯示的圖片
fresco:failureImageScaleType="centerInside"//失敗圖片的顯示方式
fresco:retryImage="@drawable/retrying"//重試圖
fresco:retryImageScaleType="centerCrop"//重試圖顯示方式
fresco:progressBarImage="@drawable/progress_bar"
fresco:progressBarImageScaleType="centerInside"
fresco:progressBarAutoRotateInterval="1000"
fresco:backgroundImage="@color/blue"
fresco:overlayImage="@drawable/watermark"
fresco:pressedStateOverlayImage="@color/red"
fresco:roundAsCircle="false"
fresco:roundedCornerRadius="1dp"
fresco:roundTopLeft="true"
fresco:roundTopRight="false"
fresco:roundBottomLeft="false"
fresco:roundBottomRight="true"
fresco:roundWithOverlayColor="@color/corner_color"
fresco:roundingBorderWidth="2dp"
fresco:roundingBorderColor="@color/border_color"
/>
說明:必須宣告 android:layout_width 和 android:layout_height,否則將無法正確載入影象,另外不支援 wrap_content 屬性,但也有例外的時候,如果想固定控制元件的寬高比,則可以使用wrap_content,並通過在xml程式碼中設定fresco:viewAspectRatio="小數"或者在Java程式碼中設定mSimpleDraweeView.setAspectRatio(1.33f);即可。
在Java中自定義顯示圖
一般情況下,在XML設定顯示效果即可, 如果想更多定製化,可以這樣:
建立一個 builder 然後設定給 SimpleDraweeView:
List<Drawable> backgroundsList;
List<Drawable> overlaysList;
GenericDraweeHierarchyBuilder builder =
new GenericDraweeHierarchyBuilder(getResources());
GenericDraweeHierarchy hierarchy = builder
.setFadeDuration(300)
.setPlaceholderImage(new MyCustomDrawable())
.setBackgrounds(backgroundList)
.setOverlays(overlaysList)
.build();
mSimpleDraweeView.setHierarchy(hierarchy);
注意:請不要多次呼叫setHierarchy,即使這個View是可回收的。建立 DraweeHierarchy 的較為耗時的一個過程,應該多次利用。
修改 DraweeHierarchy
DraweeHierarchy 的一些屬性可以在執行時改變。
要改變這些屬性,首先獲取一個引用:
GenericDraweeHierarchy hierarchy = mSimpleDraweeView.getHierarchy();
修改佔位圖
修改佔位圖為資源id:hierarchy.setPlaceholderImage(R.drawable.placeholderId);
或者修改為一個 Drawable:Drawable drawable; hierarchy.setPlaceholderImage(drawable);
改變影象的顯示
修改縮放型別:
hierarchy.setActualImageScaleType(ScalingUtils.ScaleType.CENTER_INSIDE);
如果你選擇縮放型別為 focusCrop,需要指定一個居中點:hierarchy.setActualImageFocusPoint(point);
你可以為影象新增一個 color filter:
ColorFilter filter;
// 建立filter
hierarchy.setActualImageColorFilter(filter);
圓角
除了圓角顯示方式(原來為圓角的不能修改為圓圈,反之亦然),其他圓角相關的呈現引數, 具體參見這裡 是可以動態修改的。
如下: 獲取DraweeHierarchy的圓角顯示引數,修改圓角半徑為10。
RoundingParams roundingParams = hierarchy.getRoundingParams();
roundingParams.setCornersRadius(10);
hierarchy.setRoundingParams(roundingParams);
OK,到此就已經掌握了Fresco的基礎用法,接一下的一篇會研究Fresco的一些高階功能及技巧。
相關推薦
Fresco用法總結基礎篇
Fresco是Facebook最新推出的一款用於Android應用中展示圖片的強大圖片庫,可以從網路、本地儲存和本地資源中載入圖片。相對於ImageLoader,擁有更快的圖片下載速度以及可以載入和顯示gif圖等諸多優勢,是個很好的圖片框架。PS:畢竟是facebook開源
【備戰春招/秋招系列】美團面經總結基礎篇 (附詳解答案)
該文已加入開源文件:JavaGuide(一份涵蓋大部分Java程式設計師所需要掌握的核心知識)。地址:github.com/Snailclimb/…. 【強烈推薦!非廣告!】阿里雲雙11褥羊毛活動:m.aliyun.com/act/team111… 差不多一折,不過僅限阿里雲新人購買,不是新人的朋
Python學習總結-基礎篇
正在學習python中,收集整理下學習筆記,以供參考。本篇主要為基礎語法。 一、基礎知識 1、資料型別和變數 python是動態語言,不像java的靜態語言那樣先宣告變數的資料型別才能使用,直接對變數賦值即可 2、字元編碼 統一用utf-8即可變長的Unicode 其中
git在工作中的用法總結-使用篇
上一篇介紹了git的環境安裝配置,本篇對git在工作中常用的用法進行總結,已滿足大部分的日常工作需求,對於其他的一些git命令用法在今後使用到時我也會更新上來,文中如有錯誤,歡迎大家指出來,謝謝~ 一、git本地基礎用法 1、建立程式碼倉庫 git init 2、加入所有目錄到倉庫 git a
RF新手常見問題總結--(基礎篇)
1. 經常有人問這個元素找不到,一般先排除這兩個地方,再自己找找 A:是否等待了足夠的時間讓元素載入 (增加sleep xx, wait Until xxx) B: 仔細查查,這個元素是否進入到另一個frame了 (select frame xxx) 上面兩點都確定了還不行
SQL Server 入門學習總結---基礎篇
首先相信很多人在開始準備學習的時候,肯定對資料庫的基本學習路線是蒙的,當然我也是這樣過來的。我也是在後來把基礎知識學完之後,才看到一張圖,很棒的學習路線圖。先把這個分享給大家: 對於這張圖,相信不用
2017年5月iOS招人心得答案總結(基礎篇)
技術 最近正在準備換份工作, 看到網上有份題庫, 覺得不錯, 準備整理下, 複習下所學知識, 為面試做足準備, 下面是我整理了一上午的題庫答案, 希望能幫大家溫習下知識; 當然如果同為找工作的朋友, 也希望你能找到份誠心的工作;之後的答案已附下方, 謝謝大家(
面試準備&總結-Java基礎篇
logs 服務器 運行 錯誤 筆記 table code 其他 pro 在vps的服務器到期了,在hw又不能訪問,直接在博客園寫筆記了。 基礎篇 1. 集合類的繼承關系,源碼實現原理,初始大小和如何增長。 - list類初始大小10,加載因子為1,擴容到1.5+1。
基礎篇之集合(一)(List)總結
intern ansi [] 集合 add 引用 public log ++ 1. List集合下常用的集合(ArrayList,LinkedList,Vector); JVM垃圾回收GC,Java中采取了可達性分析法,標記所有從根節點開始的可達對象,未被標記的對象就
基礎篇之集合(二)總結
線程不安全 emp abstract 和集 write next 不可變 叠代器 關系 1. Map集合和collection結合的區別 1》Collection一次存一個元素;Map一次存一對元素; 2》Collection是單列集合;Map是雙列集合; 3》Map中的存
java集合基礎篇 簡單總結
log 轉型 first exceptio set lin 一個隊列 left 刪除 昨天晚上看了編程思想4的持有對象,所以把學到看到的一些記記背背的方面給總結一下。 java的容器主要分為兩類,一個是實現了接口Collection的一類,還有一個是
Linux基礎篇--linux基礎和幫助用法
ring 解決方法 變化 功能 信息 給定 兩種 linux基礎 linux 內核 Linux基礎篇--linux基礎和幫助用法 本章概要 用戶登錄 終端 Shell介紹 執行命令 簡單命令 Tab鍵補全 命令行歷史 bash快捷鍵 使
JAVA常用集合框架用法詳解基礎篇一之Colletion介面
首先,在學習集合之前我們能夠使用的可以儲存多個元素的容器就是陣列。 下面舉幾個例子主要是引出集合類的: 1、8,4,5,6,7,55,7,8 像這樣的型別相同的可以使用陣列來儲存,本例可以用int[] arr來儲存。 2、”zhnagsan”,true,68 像這樣的可以使
JAVA常用集合框架用法詳解基礎篇三之Colletion子介面Set
這一篇我們來介紹Collection介面的另一個子介面,Set介面。Set是個介面,元素不可以重複,是無序的。Set介面中的方法和Collection的一致。 A、Set的子類: 1、HashSet:此類實現的Set介面,由雜湊表(實際上是一個HashMap)例項支援,它不保證Set的迭代順
JAVA常用集合框架用法詳解基礎篇二之Colletion子介面List
接著上一篇,接著講講集合的知識。上一篇講了Collection介面。它可以說是集合的祖先了,我們這一篇就說說它的子孫們。 一、Collection的子介面 List:有序(存入和取出的順序一致),元素都有索引(即角標),元素可以重複。 Set:元素不能重複,無序的。 首先講講L
Spring Boot (基礎篇):Spring Boot知識點總結
Spring Boot簡介 SpringBoot 以便捷開發、快速部署著稱。設計目的是用來簡化新Spring應用的初始搭建以及開發過程。 SpringBoot 致力於簡潔,讓開發者寫更少的配置,程式能夠更快的執行和啟動 SpringBoot 設計原則就是 約定優於配置。並且
python爬蟲-基礎用法總結
近期在學習爬蟲,前面自己在網上找部落格看,也自己寫了一些簡單的程式碼,感覺知識不夠系統。故從網上找了視訊來學習,下面是對一些基礎知識的總結。 一.urllib庫使用(還是requests庫方便,所以不列舉用法了) 二.requests庫使用(比urll
Unity基礎篇: UGUI中的Slider,Scrollbar總結與區分。
Slider(滑動條):是一個主要用於形象的拖動以改變目標值的控制元件,他的最恰當應用是用來改變一個數值,最大值和最小值自定義,拖動滑塊可在此之間改變,例如改變聲音大小。 Scrollbar(滾動條):是一個主要用於形象的拖動以改變目標比例的控制元件,他的最恰當應用是用
java基礎06_引用型別用法總結_debug_final_內部類
一、斷點除錯:1.在需要暫停的程式碼的左側行號的位置單擊一下,會顯示一個紅色的圓圈,表示斷點位置。2.點選“Debug執行”–程式碼右鍵–>Debug "main…"3.執行起來後在斷點處會暫停;4.單步除錯:F7(單步執行(一行一行執行),遇到方法呼叫,
git在工作中的用法總結-環境安裝篇
使用git有很長一段時間了 ,平時用到的時候都是直接google,經常用到的一些也記錄在筆記中,但有時候筆記太多,實在是太亂了(其實是我太懶~ 哈?),找都要半天的時候還不如直接google,今天有空索性將以前的筆記整理一下發在部落格中,便於今後檢視,關於git的使用,這裡我打算分開寫,分為環境安裝篇和