@Override public void applyOptions(Context context, GlideBuilder builder) { builder.setDiskCache(new DiskCache.Factory() { @Override public DiskCache build() { // Careful: the external cache directory doesn't enforce permissions File cacheDirectory = new File(DataHelper.getCacheFile(UiUtils.getContext()), "Glide"); return DiskLruCacheWrapper.get(DataHelper.makeDirs(cacheDirectory), IMAGE_DISK_CACHE_MAX_SIZE); } }); MemorySizeCalculator calculator = new MemorySizeCalculator(context); int defaultMemoryCacheSize = calculator.getMemoryCacheSize(); int defaultBitmapPoolSize = calculator.getBitmapPoolSize(); int customMemoryCacheSize = (int) (1.2 * defaultMemoryCacheSize); int customBitmapPoolSize = (int) (1.2 * defaultBitmapPoolSize); builder.setMemoryCache(new LruResourceCache(customMemoryCacheSize)); builder.setBitmapPool(new LruBitmapPool(customBitmapPoolSize)); }
@Override public void applyOptions(Context context, GlideBuilder builder) { builder.setDiskCache(new DiskCache.Factory() { @Override public DiskCache build() { // Careful: the external cache directory doesn't enforce permissions return DiskLruCacheWrapper.get(DataHelper.getCacheFile(UiUtils.getContext()), IMAGE_DISK_CACHE_MAX_SIZE); } }); MemorySizeCalculator calculator = new MemorySizeCalculator(context); int defaultMemoryCacheSize = calculator.getMemoryCacheSize(); int defaultBitmapPoolSize = calculator.getBitmapPoolSize(); int customMemoryCacheSize = (int) (1.2 * defaultMemoryCacheSize); int customBitmapPoolSize = (int) (1.2 * defaultBitmapPoolSize); builder.setMemoryCache(new LruResourceCache(customMemoryCacheSize)); builder.setBitmapPool(new LruBitmapPool(customBitmapPoolSize)); }
@Override public void applyOptions(final Context context, GlideBuilder builder) { // 缓存目录 builder.setDiskCache(new DiskCache.Factory() { @Override public DiskCache build() { AppComponent component = ((App) context.getApplicationContext()).getAppComponent(); return DiskLruCacheWrapper.get(FileUtils.makeDirs(new File(component.cacheFile(), "Glide")), DISK_SIZE); } }); // 自定义内存缓存和图片池大小 MemorySizeCalculator calculator = new MemorySizeCalculator(context); builder.setMemoryCache(new LruResourceCache((int) (1.2 * calculator.getMemoryCacheSize()))); builder.setBitmapPool(new LruBitmapPool((int) (1.2 * calculator.getBitmapPoolSize()))); // 图片格式 builder.setDecodeFormat(DecodeFormat.PREFER_RGB_565); // 默认 }
@Override public void applyOptions(final Context context, GlideBuilder builder) { builder.setDiskCache(new DiskCache.Factory() { @Override public DiskCache build() { // Careful: the external cache directory doesn't enforce permissions return DiskLruCacheWrapper.get(Glide.getPhotoCacheDir(context), ConfigConstants.MAX_DISK_CACHE_SIZE); } }); MemorySizeCalculator calculator = new MemorySizeCalculator(context); int defaultMemoryCacheSize = calculator.getMemoryCacheSize(); int defaultBitmapPoolSize = calculator.getBitmapPoolSize(); int customMemoryCacheSize = (int) (1.2 * defaultMemoryCacheSize); int customBitmapPoolSize = (int) (1.2 * defaultBitmapPoolSize); builder.setMemoryCache(new LruResourceCache(customMemoryCacheSize)); builder.setBitmapPool(new LruBitmapPool(customBitmapPoolSize)); }
@Override public void applyOptions(final Context context, GlideBuilder builder) { builder.setDiskCache(new DiskCache.Factory() { @Override public DiskCache build() { File cacheLocation = new File(AppUtils.getPath(context, AppUtils.StorageFile.cache)); cacheLocation.mkdirs(); return DiskLruCacheWrapper.get(cacheLocation, DISK_CACHE_SIZE); } }); // MemorySizeCalculator calculator = new MemorySizeCalculator(context); // int defaultMemoryCacheSize = calculator.getMemoryCacheSize(); // int defaultBitmapPoolSize = calculator.getBitmapPoolSize(); // // int customMemoryCacheSize = (int) (0.25 * defaultMemoryCacheSize); // int customBitmapPoolSize = (int) (0.25* defaultBitmapPoolSize); // // builder.setMemoryCache( new LruResourceCache( customMemoryCacheSize )); // builder.setBitmapPool( new LruBitmapPool( customBitmapPoolSize )); }
@Override public void applyOptions(Context context, GlideBuilder builder) { builder.setDiskCache(new DiskCache.Factory() { @Override public DiskCache build() { // Careful: the external cache directory doesn't enforce permissions AppComponent appComponent = ((App) context.getApplicationContext()).getAppComponent(); return DiskLruCacheWrapper.get(DataHelper.makeDirs(new File(appComponent.cacheFile(), "Glide")), IMAGE_DISK_CACHE_MAX_SIZE); } }); MemorySizeCalculator calculator = new MemorySizeCalculator(context); int defaultMemoryCacheSize = calculator.getMemoryCacheSize(); int defaultBitmapPoolSize = calculator.getBitmapPoolSize(); int customMemoryCacheSize = (int) (1.2 * defaultMemoryCacheSize); int customBitmapPoolSize = (int) (1.2 * defaultBitmapPoolSize); builder.setMemoryCache(new LruResourceCache(customMemoryCacheSize)); builder.setBitmapPool(new LruBitmapPool(customBitmapPoolSize)); }
@Override public void applyOptions(Context context, GlideBuilder builder) { builder.setDiskCache(new DiskCache.Factory() { @Override public DiskCache build() { File pathIcons = new File(Configuration.PATH_CACHE_ICONS); pathIcons.mkdirs(); return DiskLruCacheWrapper.get(pathIcons, DEFAULT_DISK_CACHE_SIZE); } }); final MemorySizeCalculator calculator = new MemorySizeCalculator(context); final int defaultMemoryCacheSize = calculator.getMemoryCacheSize(); builder.setMemoryCache(new LruResourceCache(defaultMemoryCacheSize / 2)); final int defaultBitmapPoolSize = calculator.getBitmapPoolSize(); builder.setBitmapPool(new LruBitmapPool(defaultBitmapPoolSize / 2)); }
public static void init(final Context context) { OkHttpClient okHttpClient = new OkHttpClient(); okHttpClient.setReadTimeout(30, TimeUnit.SECONDS); okHttpClient.setConnectTimeout(30, TimeUnit.SECONDS); // okHttpClient.setProtocols(Arrays.asList(Protocol.HTTP_1_1)); GlideBuilder glideBuilder = new GlideBuilder(context) .setDiskCache(new DiskCache.Factory() { @Override public DiskCache build() { // Careful: the external cache directory doesn't enforce permissions File cacheLocation = new File(context.getExternalCacheDir(), AppConfig.CACHE_IMAGE_DIR); cacheLocation.mkdirs(); return DiskLruCacheWrapper.get(cacheLocation, 100 * 1024 * 1024); } }); if (!Glide.isSetup()) { Glide.setup(glideBuilder); } Glide.get(context).register(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory(okHttpClient)); }
@Override public void applyOptions(final Context context, GlideBuilder builder) { builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888);// Bitmap格式转换到ARGB_8888 //内存缓存 MemorySizeCalculator memorySizeCalculator = new MemorySizeCalculator(context); int defaultMemoryCacheSize = memorySizeCalculator.getMemoryCacheSize(); int defalutBitmapPoolSize = memorySizeCalculator.getBitmapPoolSize(); builder.setMemoryCache(new LruResourceCache((int) (defalutBitmapPoolSize * 1.2)));//内部 builder.setBitmapPool(new LruBitmapPool((int) (defalutBitmapPoolSize * 1.2))); //磁盘缓存 builder.setDiskCache(new InternalCacheDiskCacheFactory(context, 1024 * 1024 * 10));//内部磁盘缓存 builder.setDiskCache(new ExternalCacheDiskCacheFactory(context, 10 * 1024 * 1024));//磁盘缓存到外部存储 //指定缓存目录1 String downLoadPath = Environment.getDownloadCacheDirectory().getPath(); builder.setDiskCache(new DiskLruCacheFactory(downLoadPath, defaultMemoryCacheSize)); //指定缓存目录2 builder.setDiskCache(new DiskCache.Factory() { @Override public DiskCache build() { File cacheLocation = new File(FileUtils.getCacheDir(context), "GlideCache"); return DiskLruCacheWrapper.get(cacheLocation, 1024 * 1024 * 10); } }); }
@Override public void applyOptions(final Context context, GlideBuilder builder) { builder.setDiskCache(new DiskCache.Factory() { @Override public DiskCache build() { File dir = CacheUtil.getCacheDir(context, "glide/1"); return DiskLruCacheWrapper.get(dir, 50 * 1024 * 1024); } }); //blows up // RequestOptions options = new RequestOptions() // .diskCacheStrategy(DiskCacheStrategy.RESOURCE) // .centerCrop(context) // .placeholder(R.drawable.default_artwork) // ; // builder.setDefaultRequestOptions(options); if (BuildConfig.LOGVV) { builder.setLogLevel(Log.DEBUG); } }
@Override public void applyOptions(final Context context, GlideBuilder builder) { builder.setDiskCache( new DiskCache.Factory() { @Override public DiskCache build() { return DiskLruCacheWrapper.get( Glide.getPhotoCacheDir(context), ConfigConstants.MAX_DISK_CACHE_SIZE); } }); builder.setMemoryCache(new LruResourceCache(ConfigConstants.MAX_MEMORY_CACHE_SIZE)); }
@Override public void applyOptions(Context context, GlideBuilder builder) { AppComponent appComponent = ArmsUtils.obtainAppComponentFromContext(context); builder.setDiskCache(new DiskCache.Factory() { @Override public DiskCache build() { // Careful: the external cache directory doesn't enforce permissions return DiskLruCacheWrapper.get(DataHelper.makeDirs(new File(appComponent.cacheFile(), "Glide")), IMAGE_DISK_CACHE_MAX_SIZE); } }); MemorySizeCalculator calculator = new MemorySizeCalculator.Builder(context).build(); int defaultMemoryCacheSize = calculator.getMemoryCacheSize(); int defaultBitmapPoolSize = calculator.getBitmapPoolSize(); int customMemoryCacheSize = (int) (1.2 * defaultMemoryCacheSize); int customBitmapPoolSize = (int) (1.2 * defaultBitmapPoolSize); builder.setMemoryCache(new LruResourceCache(customMemoryCacheSize)); builder.setBitmapPool(new LruBitmapPool(customBitmapPoolSize)); //将配置 Glide 的机会转交给 GlideImageLoaderStrategy,如你觉得框架提供的 GlideImageLoaderStrategy //并不能满足自己的需求,想自定义 BaseImageLoaderStrategy,那请你最好实现 GlideAppliesOptions //因为只有成为 GlideAppliesOptions 的实现类,这里才能调用 applyGlideOptions(),让你具有配置 Glide 的权利 BaseImageLoaderStrategy loadImgStrategy = appComponent.imageLoader().getLoadImgStrategy(); if (loadImgStrategy instanceof GlideAppliesOptions) { ((GlideAppliesOptions) loadImgStrategy).applyGlideOptions(context, builder); } }
@Override public void applyOptions(Context context, GlideBuilder builder) { AppComponent appComponent = ((App) context.getApplicationContext()).getAppComponent(); builder.setDiskCache(new DiskCache.Factory() { @Override public DiskCache build() { // Careful: the external cache directory doesn't enforce permissions return DiskLruCacheWrapper.get(DataHelper.makeDirs(new File(appComponent.cacheFile(), "Glide")), IMAGE_DISK_CACHE_MAX_SIZE); } }); MemorySizeCalculator calculator = new MemorySizeCalculator.Builder(context).build(); int defaultMemoryCacheSize = calculator.getMemoryCacheSize(); int defaultBitmapPoolSize = calculator.getBitmapPoolSize(); int customMemoryCacheSize = (int) (1.2 * defaultMemoryCacheSize); int customBitmapPoolSize = (int) (1.2 * defaultBitmapPoolSize); builder.setMemoryCache(new LruResourceCache(customMemoryCacheSize)); builder.setBitmapPool(new LruBitmapPool(customBitmapPoolSize)); //将配置 Glide 的机会转交给 GlideImageLoaderStrategy,如你觉得框架提供的 GlideImageLoaderStrategy //并不能满足自己的需求,想自定义 BaseImageLoaderStrategy,那请你最好实现 GlideAppliesOptions //因为只有成为 GlideAppliesOptions 的实现类,这里才能调用 applyGlideOptions(),让你具有配置 Glide 的权利 BaseImageLoaderStrategy loadImgStrategy = appComponent.imageLoader().getLoadImgStrategy(); if (loadImgStrategy instanceof GlideAppliesOptions) { ((GlideAppliesOptions) loadImgStrategy).applyGlideOptions(context, builder); } }
@Override public void applyOptions(Context context, GlideBuilder builder) { super.applyOptions(context, builder); builder.setDiskCache(() -> { // Careful: the external cache directory doesn't enforce permissions return DiskLruCacheWrapper.get(DataHelper.makeDirs(new File(RepositoryUtils.INSTANCE.obtainRepositoryComponent(context).cacheFile(), "Glide")), IMAGE_DISK_CACHE_MAX_SIZE); }); MemorySizeCalculator calculator = new MemorySizeCalculator.Builder(context).build(); int defaultMemoryCacheSize = calculator.getMemoryCacheSize(); int defaultBitmapPoolSize = calculator.getBitmapPoolSize(); int customMemoryCacheSize = (int) (1.2 * defaultMemoryCacheSize); int customBitmapPoolSize = (int) (1.2 * defaultBitmapPoolSize); builder.setMemoryCache(new LruResourceCache(customMemoryCacheSize)); builder.setBitmapPool(new LruBitmapPool(customBitmapPoolSize)); //Will transfer the opportunity to transfer Glide to GlideImageLoaderStrategy, as you think the framework provides GlideImageLoaderStrategy //And can not meet their own needs, would like to customize BaseImageLoaderStrategy, then you'd better achieve GlideAppliesOptions //Because only to become GlideAppliesOptions implementation class, where to call applyGlideOptions (), so you have the right to configure Glide BaseImageLoaderStrategy imageLoaderStrategy = GmUtils.INSTANCE.obtainGmComponent(context).imageLoader().getStrategy(); if (imageLoaderStrategy instanceof GlideAppliesOptions) { ((GlideAppliesOptions) imageLoaderStrategy).applyGlideOptions(context, builder); } }
private static synchronized DiskCache createDiskCache() { final Context context = NimUIKit.getContext(); File cacheDir = StorageUtils.getOwnCacheDirectory(context, context.getPackageName() + "/cache/image/"); if (!cacheDir.exists()) { cacheDir.mkdirs(); } return DiskLruCacheWrapper.get(cacheDir, MAX_DISK_CACHE_SIZE); }
@Override public void applyOptions(Context context, GlideBuilder builder) { super.applyOptions(context, builder); builder.setDiskCache(new DiskCache.Factory() { @Nullable @Override public DiskCache build() { // Careful: the external cache directory doesn't enforce permissions return DiskLruCacheWrapper.get(DataHelper.makeDirs( new File(RepositoryUtils.INSTANCE.obtainRepositoryComponent(context).cacheFile(), "Glide")), IMAGE_DISK_CACHE_MAX_SIZE); } }); MemorySizeCalculator calculator = new MemorySizeCalculator.Builder(context).build(); int defaultMemoryCacheSize = calculator.getMemoryCacheSize(); int defaultBitmapPoolSize = calculator.getBitmapPoolSize(); int customMemoryCacheSize = (int) (1.2 * defaultMemoryCacheSize); int customBitmapPoolSize = (int) (1.2 * defaultBitmapPoolSize); builder.setMemoryCache(new LruResourceCache(customMemoryCacheSize)); builder.setBitmapPool(new LruBitmapPool(customBitmapPoolSize)); //将配置 Glide 的机会转交给 GlideImageLoaderStrategy,如你觉得框架提供的 GlideImageLoaderStrategy //并不能满足自己的需求,想自定义 BaseImageLoaderStrategy,那请你最好实现 GlideAppliesOptions //因为只有成为 GlideAppliesOptions 的实现类,这里才能调用 applyGlideOptions(),让你具有配置 Glide 的权利 BaseImageLoaderStrategy imageLoaderStrategy = ArmsUtils.INSTANCE.obtainArmsComponent(context).imageLoader().getStrategy(); if (imageLoaderStrategy instanceof GlideAppliesOptions) { ((GlideAppliesOptions) imageLoaderStrategy).applyGlideOptions(context, builder); } }
@Override public void applyOptions(Context context, GlideBuilder builder) { final AppComponent component = AppUtils.obtainAppComponentFromContext(context); builder.setDiskCache(new DiskCache.Factory() { @Override public DiskCache build() { // Careful: the external cache directory doesn't enforce permissions return DiskLruCacheWrapper.get(FileUtils.makeDirs(new File(component.getCacheFile(), "Glide")), IMAGE_DISK_CACHE_MAX_SIZE); } }); MemorySizeCalculator calculator = new MemorySizeCalculator.Builder(context).build(); int defaultMemoryCacheSize = calculator.getMemoryCacheSize(); int defaultBitmapPoolSize = calculator.getBitmapPoolSize(); int customMemoryCacheSize = (int) (1.2 * defaultMemoryCacheSize); int customBitmapPoolSize = (int) (1.2 * defaultBitmapPoolSize); builder.setMemoryCache(new LruResourceCache(customMemoryCacheSize)); builder.setBitmapPool(new LruBitmapPool(customBitmapPoolSize)); // 图片框架最终会走到 GlideImageLoader 的 load 方法中进行处理 // 如果你想自己自定义图片框架或自己实现 Glide BaseImageLoader 你需要实现 GlideAppliesOptions 接口 BaseImageLoader baseImageLoader = component.getImageLoader().getImageLoader(); if (baseImageLoader instanceof GlideAppliesOptions) { ((GlideAppliesOptions) baseImageLoader).applyGlideOptions(context, builder); } }
private void saveImg(String url){ //检查是否有sd卡 if (saveDir == null) { showToast(R.string.save_not_sd); return; } // 检查本地是否有 String fileName = getFileNameByUrl(url); File localFile = new File(saveDir,fileName); if (localFile.exists()){ showToast(R.string.save_exist); return; } // 检查glide的disk是否有 DiskCache diskCache = DiskLruCacheWrapper.get(cacheDir, App.DEFAULT_DISK_CACHE_SIZE); File diskTempFile = diskCache.get(new StringSignature(url)); if (diskTempFile == null || !diskTempFile.exists()){ showToast(R.string.save_not_downloaded); return; } // 检查是否在队列中 if (mUrlSet.contains(url)){ showToast(R.string.save_saving); return; } mExecutorService.execute(new SaveImgRunnable(url,diskTempFile.getAbsolutePath(),localFile.getAbsolutePath())); mUrlSet.add(url); showToast(R.string.save_start); }
@Override public void applyOptions(Context context, GlideBuilder builder) { builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888); builder.setDiskCache(new DiskCache.Factory() { @Override public DiskCache build() { return DiskLruCacheWrapper.get(new File(FileUtil.getAppCachePath()), LibConfig .DISK_CACHE_CAPACITY); } }); }
@Override public void applyOptions(final Context context, GlideBuilder builder) { super.applyOptions(context, builder); builder.setDiskCache( new DiskCache.Factory() { @Override public DiskCache build() { return DiskLruCacheWrapper.get( Glide.getPhotoCacheDir(context), ConfigConstants.MAX_DISK_CACHE_SIZE); } }); builder.setMemoryCache(new LruResourceCache(ConfigConstants.MAX_MEMORY_CACHE_SIZE)); builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888); }
@Override public void applyOptions(Context context, GlideBuilder builder) { // Apply options to the builder here. // builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888); builder.setDecodeFormat(DecodeFormat.PREFER_RGB_565); //默认的 final int size = 1024 * 1024 * 50; builder.setDiskCache( new InternalCacheDiskCacheFactory(context, size)); builder.setDiskCache( new InternalCacheDiskCacheFactory(context, "pics", size));//内部缓存目录 builder.setDiskCache( new ExternalCacheDiskCacheFactory(context, "outpics", size));//外部sdcard缓存目录 // If you can figure out the folder without I/O: // Calling Context and Environment class methods usually do I/O. builder.setDiskCache( new DiskLruCacheFactory("diskCacheFolder", size)); //指定sdcard缓存目录 // In case you want to specify a cache folder ("glide"): builder.setDiskCache( new DiskLruCacheFactory("diskCacheFolder_glide", "diskCacheName", size));//sdcard缓存目录 // In case you need to query the file system while determining the folder: GlideBuilder diskCacheFolder = builder.setDiskCache(new DiskLruCacheFactory(new DiskLruCacheFactory.CacheDirectoryGetter() { @Override public File getCacheDirectory() { return new File("diskCacheFolder"); } }, size)); builder.setDiskCache(new DiskCache.Factory() { @Override public DiskCache build() { File cacheLocation = new File("diskCacheFolder"); if (!cacheLocation.exists()) cacheLocation.mkdirs(); return DiskLruCacheWrapper.get(cacheLocation, size); } }); //----------- memory cache ------------- builder.setMemoryCache(new LruResourceCache(size/10)); //----------- bitmap pool ------------- builder.setBitmapPool(new LruBitmapPool(size/20)); }
@Override public void applyOptions(final Context context, GlideBuilder builder) { SharedPreferencesManager manager = new SharedPreferencesManager(context); final String cacheSize = manager.getString(DISK_CACHE_KEY, DISK_CACHE_160MB); String decodeFormat = manager.getString(DECODE_FORMAT_KEY, DECODE_FORMAT_ARGB_8888); final String cacheName = manager.getString(DISK_CACHE_NAME_KEY, DEFAULT_CACHE_NAME); DecodeFormat format = null; switch (decodeFormat) { case DECODE_FORMAT_RGB_565: format = DecodeFormat.PREFER_RGB_565; break; default: case DECODE_FORMAT_ARGB_8888: format = DecodeFormat.PREFER_ARGB_8888; break; } builder.setDecodeFormat(format); builder.setDiskCache(new DiskCache.Factory() { @Override public DiskCache build() { int sizeInMB = 160; switch (cacheSize) { case DISK_CACHE_40MB: sizeInMB = 40; break; case DISK_CACHE_80MB: sizeInMB = 80; break; case DISK_CACHE_160MB: sizeInMB = 160; break; case DISK_CACHE_320MB: sizeInMB = 320; break; default: case DISK_CACHE_640MB: sizeInMB = 640; break; } File path = null; if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { path = context.getExternalCacheDirs()[(context.getExternalCacheDirs().length - 1)]; } else { path = context.getExternalCacheDir(); } File cacheLocation = new File(path, cacheName); cacheLocation.mkdirs(); return DiskLruCacheWrapper.get(cacheLocation, sizeInMB * 1024 * 1024); } }); }