FrescoUtils
来源:互联网 发布:英语四级通用作文知乎 编辑:程序博客网 时间:2024/06/17 04:42
import android.net.Uri;import android.text.TextUtils;import com.facebook.binaryresource.BinaryResource;import com.facebook.binaryresource.FileBinaryResource;import com.facebook.cache.common.CacheKey;import com.facebook.drawee.backends.pipeline.Fresco;import com.facebook.drawee.backends.pipeline.PipelineDraweeController;import com.facebook.drawee.view.SimpleDraweeView;import com.facebook.imagepipeline.cache.DefaultCacheKeyFactory;import com.facebook.imagepipeline.common.ResizeOptions;import com.facebook.imagepipeline.core.ImagePipeline;import com.facebook.imagepipeline.core.ImagePipelineFactory;import com.facebook.imagepipeline.request.ImageRequest;import com.facebook.imagepipeline.request.ImageRequestBuilder;import java.io.File;/** * * 判断 图片有没有缓存 */public class FrescoUtils { public static boolean isImageDownloaded(Uri loadUri) { if (loadUri == null) { return false; } CacheKey cacheKey = DefaultCacheKeyFactory.getInstance().getEncodedCacheKey(ImageRequest.fromUri(loadUri), null); return ImagePipelineFactory.getInstance().getMainFileCache().hasKey(cacheKey) || ImagePipelineFactory.getInstance().getSmallImageFileCache().hasKey(cacheKey); } //return file or null public static File getCachedImageOnDisk(Uri loadUri) { File localFile = null; if (loadUri != null) { CacheKey cacheKey = DefaultCacheKeyFactory.getInstance().getEncodedCacheKey(ImageRequest.fromUri(loadUri), null); if (ImagePipelineFactory.getInstance().getMainFileCache().hasKey(cacheKey)) { BinaryResource resource = ImagePipelineFactory.getInstance().getMainDiskStorageCache().getResource(cacheKey); localFile = ((FileBinaryResource) resource).getFile(); } else if (ImagePipelineFactory.getInstance().getSmallImageFileCache().hasKey(cacheKey)) { BinaryResource resource = ImagePipelineFactory.getInstance().getSmallImageFileCache().getResource(cacheKey); localFile = ((FileBinaryResource) resource).getFile(); } } return localFile; } /** * 清除所有缓存 */ public static void clearCache() { ImagePipeline imagePipeline = Fresco.getImagePipeline(); imagePipeline.clearMemoryCaches(); imagePipeline.clearDiskCaches();// combines above two lines imagePipeline.clearCaches(); } /** * 清除缓存 * * @param url */ public static void clearCache(String url) { if (TextUtils.isEmpty(url) || "null".equals(url)) return; Uri uri = Uri.parse(url); if (isImageDownloaded(uri)) { ImagePipeline imagePipeline = Fresco.getImagePipeline(); imagePipeline.evictFromMemoryCache(uri); imagePipeline.evictFromDiskCache(uri);// combines above two lines imagePipeline.evictFromCache(uri); } } /** * 设置图片大小 * * @param view * @param uri * @param width * @param height */ public static void resizeOptions(SimpleDraweeView view, String uri, int width, int height) { ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.parse(uri)) .setResizeOptions(new ResizeOptions(width, height)) .build(); PipelineDraweeController controller = (PipelineDraweeController) Fresco.newDraweeControllerBuilder() .setOldController(view.getController()) .setImageRequest(request) .build(); view.setController(controller); } public static void loadUri(SimpleDraweeView view, String url) { if (TextUtil.isEmpty(url)) return; if (view == null) return; Uri uri = Uri.parse(url); if (isImageDownloaded(uri)) { File file = getCachedImageOnDisk(uri); if (file == null) { view.setImageURI(Uri.parse(url)); } else { if (file.exists()) { view.setImageURI(Uri.fromFile(file)); } else { view.setImageURI(Uri.parse(url)); } } } }}
0 0