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、根据表达的中心,...