Skip to content

Instantly share code, notes, and snippets.

@wlanjie
Created August 5, 2015 13:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wlanjie/c2ccff3f5a93fb5f9064 to your computer and use it in GitHub Desktop.
Save wlanjie/c2ccff3f5a93fb5f9064 to your computer and use it in GitHub Desktop.
package com.fresco.android;
import com.freco.android.config.FrescoConfig;
public class Application extends android.app.Application {
@Override
public void onCreate() {
}
public static GenericDraweeHierarchy getGenericDraweeHierarchy() {
return FrescoConfig.initializeGenericDraweeHierarchy(getApplicationContext(), null);
}
}
package com.fresco.android.util;
import android.net.Uri;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.drawee.controller.ControllerListener;
import com.facebook.drawee.generic.GenericDraweeHierarchy;
import com.facebook.drawee.generic.RoundingParams;
import com.facebook.drawee.interfaces.DraweeController;
import com.facebook.drawee.view.GenericDraweeView;
import com.facebook.imagepipeline.common.ResizeOptions;
import com.facebook.imagepipeline.image.ImageInfo;
import com.facebook.imagepipeline.request.ImageRequest;
import com.facebook.imagepipeline.request.ImageRequestBuilder;
import com.facebook.imagepipeline.request.Postprocessor;
import com.fresco.android.Application;
/**
* Created by wlanjie on 15/5/18.
* 图片加载库的工具类
*/
public final class ImageDecode {
/**
* 解析图片
* @param uri 图片地址
* @param draweeView 显示图片的View
*/
public static void decodeImage(final String uri, final GenericDraweeView draweeView) {
final ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.parse(uri))
.build();
final DraweeController controller = Fresco.newDraweeControllerBuilder()
.setOldController(draweeView.getController())
.setImageRequest(request)
.build();
draweeView.setHierarchy(Application.getGenericDraweeHierarchy());
draweeView.setController(controller);
}
/**
* 解析图片
* @param draweeView 显示图片的View
* @param controller 监听事件
*/
public static void decodeImage(final GenericDraweeView draweeView, final DraweeController controller) {
draweeView.setHierarchy(Application.getGenericDraweeHierarchy());
draweeView.setController(controller);
}
/**
* 解析图片
* @param uri 图片地址
* @param draweeView 显示图片的View
* @param listener 监听事件
*/
public static void decodeImage(final String uri, final GenericDraweeView draweeView, final ControllerListener<? super ImageInfo> listener) {
final DraweeController controller = Fresco.newDraweeControllerBuilder()
.setControllerListener(listener)
.setUri(Uri.parse(uri))
.build();
draweeView.setHierarchy(Application.getGenericDraweeHierarchy());
draweeView.setController(controller);
}
/**
* 解析图片并设置图片解析成功后的事件
* @param uri 图片地址
* @param draweeView 显示图片的View
* @param postprocessor 监听事件
*/
public static void decodeImageWithProcessor(final String uri, final GenericDraweeView draweeView, final Postprocessor postprocessor) {
final ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.parse(uri))
.setPostprocessor(postprocessor)
.build();
final DraweeController controller = Fresco.newDraweeControllerBuilder()
.setOldController(draweeView.getController())
.setImageRequest(request)
.build();
draweeView.setHierarchy(Application.getGenericDraweeHierarchy());
draweeView.setController(controller);
}
public static void decodeImageWithProcessor(final String uri, final GenericDraweeView draweeView, final float round, final Postprocessor postprocessor) {
final ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.parse(uri))
.setPostprocessor(postprocessor)
.build();
final DraweeController controller = Fresco.newDraweeControllerBuilder().setOldController(draweeView.getController()).setImageRequest(request).build();
final GenericDraweeHierarchy mHierarchy = Application.getGenericDraweeHierarchy();
final RoundingParams mRoundingParams = RoundingParams.fromCornersRadius(round);
mHierarchy.setRoundingParams(mRoundingParams);
draweeView.setHierarchy(mHierarchy);
draweeView.setController(controller);
}
/**
* 解析图片并设置图片的宽和高
* @param uri 图片地址
* @param draweeView 显示图片的View
* @param width 图片的宽
* @param height 图片的高
*/
public static void decodeImageWithWidthHeight(final String uri, final GenericDraweeView draweeView, final int width, final int height) {
final ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.parse(uri))
.setResizeOptions(new ResizeOptions(width, height))
.build();
final DraweeController controller = Fresco.newDraweeControllerBuilder()
.setOldController(draweeView.getController())
.setImageRequest(request)
.build();
draweeView.setHierarchy(Application.getGenericDraweeHierarchy());
draweeView.setController(controller);
}
/**
* 解析图片并设置图片旋转至和屏幕方向一致
* @param uri 图片的地址
* @param draweeView 显示图片的View
*/
public static void decodeImageWithAutoRotate(final String uri, GenericDraweeView draweeView) {
final ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.parse(uri))
.setAutoRotateEnabled(true)
.build();
final DraweeController controller = Fresco.newDraweeControllerBuilder()
.setOldController(draweeView.getController())
.setImageRequest(request)
.build();
draweeView.setHierarchy(Application.getGenericDraweeHierarchy());
draweeView.setController(controller);
}
/**
* 解析图片,设置的是一个正规的圆形
* @param uri 图片地址
* @param draweeView 显示图片的View
*/
public static void decodeRoundImage(final String uri, final GenericDraweeView draweeView) {
final ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.parse(uri))
.build();
final DraweeController controller = Fresco.newDraweeControllerBuilder().setOldController(draweeView.getController()).setImageRequest(request).build();
final GenericDraweeHierarchy mHierarchy = Application.getGenericDraweeHierarchy();
final RoundingParams mRoundingParams = RoundingParams.asCircle();
mHierarchy.setRoundingParams(mRoundingParams);
draweeView.setHierarchy(mHierarchy);
draweeView.setController(controller);
}
/**
* 解析图片,可以设置圆角
* @param uri 图片地址
* @param draweeView 显示图片的View
* @param round 圆角
*/
public static void decodeRoundImage(final String uri, final GenericDraweeView draweeView, final float round) {
final GenericDraweeHierarchy mHierarchy = Application.getGenericDraweeHierarchy();
final RoundingParams mRoundingParams = RoundingParams.fromCornersRadius(round);
mHierarchy.setRoundingParams(mRoundingParams);
draweeView.setHierarchy(mHierarchy);
final ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.parse(uri))
.build();
final DraweeController controller = Fresco.newDraweeControllerBuilder().setOldController(draweeView.getController()).setImageRequest(request).build();
draweeView.setController(controller);
}
/**
* 解析图片,可以设置圆角
* @param uri 图片地址
* @param draweeView 显示图片的View
* @param round 圆角
*/
public static void decodeRoundImage(final String uri, final GenericDraweeView draweeView, float topLeft, float topRight, float bottomRight, float bottomLeft) {
final GenericDraweeHierarchy mHierarchy = Application.getGenericDraweeHierarchy();
final RoundingParams mRoundingParams = RoundingParams.fromCornersRadii(topLeft, topRight, bottomLeft, bottomRight);
mHierarchy.setRoundingParams(mRoundingParams);
draweeView.setHierarchy(mHierarchy);
final ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.parse(uri))
.build();
final DraweeController controller = Fresco.newDraweeControllerBuilder().setOldController(draweeView.getController()).setImageRequest(request).build();
draweeView.setController(controller);
}
/**
* 解析Gif图片
* @param uri 图片地址
* @param draweeView 显示图片的View
*/
public static void decodeGifImage(final String uri, final GenericDraweeView draweeView) {
decodeGifImage(uri, draweeView, null);
}
/**
* 解析Gif图片
* @param uri 图片地址
* @param draweeView 显示图片的View
* @param listener 监听事件
*/
public static void decodeGifImage(final String uri, final GenericDraweeView draweeView, final ControllerListener<? super ImageInfo> listener) {
DraweeController controller = Fresco.newDraweeControllerBuilder()
.setUri(Uri.parse(uri))
.setControllerListener(listener)
.build();
draweeView.setHierarchy(Application.getGenericDraweeHierarchy());
draweeView.setController(controller);
}
public static void decodeGifAutoPlayImage(final String uri, final GenericDraweeView draweeView) {
ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.parse(uri))
.build();
DraweeController controller = Fresco.newDraweeControllerBuilder()
.setImageRequest(request)
.setOldController(draweeView.getController())
.build();
draweeView.setHierarchy(Application.getGenericDraweeHierarchy());
draweeView.setController(controller);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment