package com.oldeleven.guaguacartoonversionone.helper;
import android.content.Context;
import android.net.Uri;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.drawee.backends.pipeline.PipelineDraweeController;
import com.facebook.drawee.drawable.ProgressBarDrawable;
import com.facebook.drawee.generic.GenericDraweeHierarchy;
import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder;
import com.facebook.drawee.view.SimpleDraweeView;
import com.facebook.imagepipeline.request.ImageRequest;
import com.facebook.imagepipeline.request.ImageRequestBuilder;
/**
* Created by My on 2016/8/8.
* 封裝的FrescoHelper工具類
* 第一步:導包 compile 'com.facebook.fresco:fresco:0.12.0'
* 第二步:自定義Application的子類用于初始化框架
*
* 單例FrescoHelper:
* DCL實現的單例雖然一定程度上解決了資源消耗,多余的同步、線程安全問題,但還是在某些情況下回出現失效的問題。
*
*/
public class FrescoHelper {
private static Context mContext = null;
private static FrescoHelper sInstance = null;
/**
* 構造器私有化
* @param context
*/
private FrescoHelper(Context context) {
mContext = context;
}
/**
* 獲得單例的對象
* @param context 上下文環境對象
* @return
*/
public static FrescoHelper getInstance(Context context){
if (sInstance == null){
synchronized (FrescoHelper.class){
if (sInstance == null){
sInstance = new FrescoHelper(context);
}
}
}
return sInstance;
}
/**
* 不帶樣式的圖片加載
* @param view
*/
public static void SimpleImageLoader(SimpleDraweeView view,String imageUrl){
//設置要加載的網絡圖片的地址
view.setImageURI(Uri.parse(imageUrl));
//設置圖片的比例 4:3
view.setAspectRatio(1.33f);
}
///////////////////////////////////////////////////////////////////////////
// 加載圖片的樣式設置
///////////////////////////////////////////////////////////////////////////
/**
* 設置Fresco框架的進度條加載圖片
*
* @return
*/
//fresco的特性
public static GenericDraweeHierarchy getHierarchy() {
GenericDraweeHierarchy genericDraweeHierarchy = new GenericDraweeHierarchyBuilder(mContext.getResources())
.setProgressBarImage(new ProgressBarDrawable())
.build();
return genericDraweeHierarchy;
}
/**
* @param view SimpleDraweeView 的對象
* @param imageUrl 要加載的網絡圖片的地址
* @return 返回PipelineDraweeController控制器的對象
*/
public static PipelineDraweeController getController(SimpleDraweeView view, String imageUrl) {
//漸進式加載
ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.parse(imageUrl))
.setProgressiveRenderingEnabled(true).build();
//初始化控制器
PipelineDraweeController pipelineDraweeController = (PipelineDraweeController) Fresco.newDraweeControllerBuilder()
.setImageRequest(request)
.setOldController(view.getController())
.setTapToRetryEnabled(true).build();
return pipelineDraweeController;
}
}
工具類三、Fresco
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
推薦閱讀更多精彩內容
- iOS開發相關框架### 本文章由 The EST Group 成員 @Aufree 整理而成,在此感謝大神的整理...
- 版本記錄 前言 針對短視頻的上傳、編輯等功能有很多的SDK,比如騰訊的SDK、七牛的SDK等,這里我就說一下我用過...
- 安卓基礎開發庫,讓開發簡單點。DevRing & Demo地址:https://github.com/LJYcod...
- 干貨要點: 1、敘述、描寫和說明是三種記“實”的能力。 2、議論和抒情是兩種寫“虛”的能力。 3、根據表達的中心,...