/* * Copyright (c) 2015 [1076559197@qq.com | tchen0707@gmail.com] * * Licensed under the Apache License, Version 2.0 (the "Licenseā€); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.github.obsessive.simplifyreader.utils; import android.content.Context; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import com.github.obsessive.library.utils.CommonUtils; import com.github.obsessive.library.utils.DensityUtils; import com.github.obsessive.simplifyreader.R; import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache; import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator; import com.nostra13.universalimageloader.cache.memory.impl.WeakMemoryCache; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.assist.ImageScaleType; import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer; import com.nostra13.universalimageloader.utils.StorageUtils; import java.io.File; public class ImageLoaderHelper { private Context mContext = null; private static volatile ImageLoaderHelper instance = null; private ImageLoaderHelper(Context context) { mContext = context; } public static ImageLoaderHelper getInstance(Context context) { if (null == instance) { synchronized (ImageLoaderHelper.class) { if (null == instance) { instance = new ImageLoaderHelper(context); } } } return instance; } public DisplayImageOptions getDisplayOptions() { return new DisplayImageOptions.Builder() .showImageOnLoading(R.color.default_image_background) .showImageForEmptyUri(R.color.default_image_background) .showImageOnFail(R.color.default_image_background) .cacheInMemory(true) .bitmapConfig(Bitmap.Config.RGB_565) .imageScaleType(ImageScaleType.EXACTLY) .cacheOnDisk(true) .considerExifParams(true) .build(); } public DisplayImageOptions getDisplayOptions(Drawable drawable) { return new DisplayImageOptions.Builder() .showImageOnLoading(drawable) .showImageForEmptyUri(drawable) .showImageOnFail(drawable) .cacheInMemory(true) .bitmapConfig(Bitmap.Config.RGB_565) .imageScaleType(ImageScaleType.EXACTLY) .cacheOnDisk(true) .considerExifParams(true) .build(); } public DisplayImageOptions getDisplayOptions(int round) { return new DisplayImageOptions.Builder() .cacheInMemory(true) .bitmapConfig(Bitmap.Config.RGB_565) .imageScaleType(ImageScaleType.EXACTLY) .cacheOnDisk(true) .considerExifParams(true) .displayer(new RoundedBitmapDisplayer(DensityUtils.dip2px(mContext, round))) .build(); } public DisplayImageOptions getDisplayOptions(int round, Drawable drawable) { return new DisplayImageOptions.Builder() .showImageOnLoading(drawable) .showImageForEmptyUri(drawable) .showImageOnFail(drawable) .cacheInMemory(true) .bitmapConfig(Bitmap.Config.RGB_565) .imageScaleType(ImageScaleType.EXACTLY) .cacheOnDisk(true) .considerExifParams(true) .displayer(new RoundedBitmapDisplayer(DensityUtils.dip2px(mContext, round))) .build(); } public DisplayImageOptions getDisplayOptions(boolean isCacheOnDisk) { return new DisplayImageOptions.Builder() .showImageOnLoading(R.color.default_image_background) .showImageForEmptyUri(R.color.default_image_background) .showImageOnFail(R.color.default_image_background) .cacheInMemory(true) .bitmapConfig(Bitmap.Config.RGB_565) .imageScaleType(ImageScaleType.EXACTLY) .cacheOnDisk(isCacheOnDisk) .considerExifParams(true) .build(); } public ImageLoaderConfiguration getImageLoaderConfiguration(String filePath) { File cacheDir = null; if (!CommonUtils.isEmpty(filePath)) { cacheDir = StorageUtils.getOwnCacheDirectory(mContext, filePath); } else { cacheDir = StorageUtils.getCacheDirectory(mContext); } ImageLoaderConfiguration.Builder builder = new ImageLoaderConfiguration.Builder(mContext); builder.denyCacheImageMultipleSizesInMemory(); builder.diskCacheSize(512 * 1024 * 1024); builder.diskCacheExtraOptions(720, 1280, null); builder.diskCache(new UnlimitedDiscCache(cacheDir)); builder.diskCacheFileNameGenerator(new Md5FileNameGenerator()); builder.memoryCacheSizePercentage(14); builder.memoryCacheSize(2 * 1024 * 1024); builder.memoryCacheExtraOptions(720, 1280); builder.memoryCache(new WeakMemoryCache()); builder.threadPoolSize(3); builder.threadPriority(Thread.NORM_PRIORITY - 2); builder.defaultDisplayImageOptions(getDisplayOptions()); return builder.build(); } }