/** * Constructor for {@link com.bumptech.glide.ListPreloader} that accepts interfaces for providing * the dimensions of images to preload, the list of models to preload for a given position, and * the request to use to load images. * * @param preloadModelProvider Provides models to load and requests capable of loading them. * @param preloadDimensionProvider Provides the dimensions of images to load. * @param maxPreload Maximum number of items to preload. */ public ListPreloader(@NonNull RequestManager requestManager, @NonNull PreloadModelProvider<T> preloadModelProvider, @NonNull PreloadSizeProvider<T> preloadDimensionProvider, int maxPreload) { this.requestManager = requestManager; this.preloadModelProvider = preloadModelProvider; this.preloadDimensionProvider = preloadDimensionProvider; this.maxPreload = maxPreload; preloadTargetQueue = new PreloadTargetQueue(maxPreload + 1); }
@SuppressWarnings("unchecked") private void preloadItem(@Nullable T item, int position, int perItemPosition) { if (item == null) { return; } int[] dimensions = preloadDimensionProvider.getPreloadSize(item, position, perItemPosition); if (dimensions == null) { return; } RequestBuilder<Object> preloadRequestBuilder = (RequestBuilder<Object>) preloadModelProvider.getPreloadRequestBuilder(item); if (preloadRequestBuilder == null) { return; } preloadRequestBuilder.into(preloadTargetQueue.next(dimensions[0], dimensions[1])); }
/** * Constructor for {@link com.bumptech.glide.ListPreloader} that accepts interfaces for providing * the dimensions of images to preload, the list of models to preload for a given position, and * the request to use to load images. * * @param preloadModelProvider Provides models to load and requests capable of loading them. * @param preloadDimensionProvider Provides the dimensions of images to load. * @param maxPreload Maximum number of items to preload. */ public ListPreloader(RequestManager requestManager, PreloadModelProvider<T> preloadModelProvider, PreloadSizeProvider<T> preloadDimensionProvider, int maxPreload) { this.requestManager = requestManager; this.preloadModelProvider = preloadModelProvider; this.preloadDimensionProvider = preloadDimensionProvider; this.maxPreload = maxPreload; preloadTargetQueue = new PreloadTargetQueue(maxPreload + 1); }
@SuppressWarnings("unchecked") private void preloadItem(@Nullable T item, int position, int perItemPosition) { if (item == null) { return; } int[] dimensions = preloadDimensionProvider.getPreloadSize(item, position, perItemPosition); if (dimensions == null) { return; } RequestBuilder<Object> preloadRequestBuilder = preloadModelProvider.getPreloadRequestBuilder(item); if (preloadRequestBuilder == null) { return; } preloadRequestBuilder.into(preloadTargetQueue.next(dimensions[0], dimensions[1])); }
private void cancelAll() { for (int i = 0; i < maxPreload; i++) { requestManager.clear(preloadTargetQueue.next(0, 0)); } }
/** * Constructor for {@link ListPreloader} that requires users to subclass and override * the {@link #getItems(int, int)} and {@link #getRequestBuilder(Object)} methods. * * @deprecated Use {@link #ListPreloader(PreloadModelProvider, * PreloadSizeProvider, int)} instead. This constructor will be removed in Glide * 4.0. * @param maxPreload Maximum number of items to preload. */ @Deprecated public ListPreloader(int maxPreload) { this.preloadModelProvider = new PreloadModelProvider<T>() { @Override public List<T> getPreloadItems(int position) { return getItems(position, position + 1); } @Override public GenericRequestBuilder getPreloadRequestBuilder(T item) { return getRequestBuilder(item); } }; this.preloadDimensionProvider = new PreloadSizeProvider<T>() { @Override public int[] getPreloadSize(T item, int adapterPosition, int perItemPosition) { return getDimensions(item); } }; this.maxPreload = maxPreload; preloadTargetQueue = new PreloadTargetQueue(maxPreload + 1); }
/** * Constructor for {@link ListPreloader} that accepts interfaces for providing the dimensions of * images to preload, the list of models to preload for a given position, and the request to use to load images. * * @param preloadModelProvider Provides models to load and requests capable of loading them. * @param preloadDimensionProvider Provides the dimensions of images to load. * @param maxPreload Maximum number of items to preload. */ public ListPreloader(PreloadModelProvider<T> preloadModelProvider, PreloadSizeProvider<T> preloadDimensionProvider, int maxPreload) { this.preloadModelProvider = preloadModelProvider; this.preloadDimensionProvider = preloadDimensionProvider; this.maxPreload = maxPreload; preloadTargetQueue = new PreloadTargetQueue(maxPreload + 1); }
@SuppressWarnings("unchecked") private void preloadItem(T item, int position, int i) { final int[] dimensions = this.preloadDimensionProvider.getPreloadSize(item, position, i); if (dimensions != null) { GenericRequestBuilder preloadRequestBuilder = this.preloadModelProvider.getPreloadRequestBuilder(item); preloadRequestBuilder.into(preloadTargetQueue.next(dimensions[0], dimensions[1])); } }
private void cancelAll() { for (int i = 0; i < maxPreload; i++) { Glide.clear(preloadTargetQueue.next(0, 0)); } }
private void cancelAll() { for (int i = 0; i < maxPreload; i++) { requestManager.clear(preloadTargetQueue.next(0, 0)); } }