/** * Sets the {@link MemorySizeCalculator} to use to calculate maximum sizes for default * {@link MemoryCache MemoryCaches} and/or default {@link BitmapPool BitmapPools}. * * @see #setMemorySizeCalculator(MemorySizeCalculator) * * @param builder The builder to use (will not be modified). * @return This builder. */ // Public API. @SuppressWarnings("unused") @NonNull public GlideBuilder setMemorySizeCalculator(@NonNull MemorySizeCalculator.Builder builder) { return setMemorySizeCalculator(builder.build()); }
MemorySizeCalculator getCalculator() { when(screenDimensions.getWidthPixels()).thenReturn(pixelSize); when(screenDimensions.getHeightPixels()).thenReturn(pixelSize); return new MemorySizeCalculator.Builder(RuntimeEnvironment.application) .setMemoryCacheScreens(memoryCacheScreens) .setBitmapPoolScreens(bitmapPoolScreens) .setMaxSizeMultiplier(sizeMultiplier) .setActivityManager(activityManager) .setScreenDimensions(screenDimensions) .setArrayPoolSize(byteArrayPoolSizeBytes) .build(); }
memorySizeCalculator = new MemorySizeCalculator.Builder(context).build();
memorySizeCalculator = new MemorySizeCalculator.Builder(context).build();
@Override public void applyOptions(@NonNull Context context, @NonNull GlideBuilder builder) { final AppComponent appComponent = ArtUtils.obtainAppComponentFromContext(context); builder.setDiskCache(new DiskCache.Factory() { @Override public DiskCache build() { // Careful: the external cache directory doesn't enforce permissions return DiskLruCacheWrapper.create(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 != null && loadImgStrategy instanceof GlideAppliesOptions) { ((GlideAppliesOptions) loadImgStrategy).applyGlideOptions(context, builder); } }
/** * Sets the {@link MemorySizeCalculator} to use to calculate maximum sizes for default * {@link MemoryCache MemoryCaches} and/or default {@link BitmapPool BitmapPools}. * * @see #setMemorySizeCalculator(MemorySizeCalculator) * * @param builder The builder to use (will not be modified). * @return This builder. */ public GlideBuilder setMemorySizeCalculator(MemorySizeCalculator.Builder builder) { return setMemorySizeCalculator(builder.build()); }
@Override public void applyOptions(@NonNull Context context, @NonNull GlideBuilder builder) { final 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.create(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 != null && loadImgStrategy instanceof GlideAppliesOptions) { ((GlideAppliesOptions) loadImgStrategy).applyGlideOptions(context, builder); } }