mirror of
https://github.com/VibedByKaKi/alexandroid.git
synced 2026-11-13 17:37:16 +01:00
212 lines
7.2 KiB
Java
212 lines
7.2 KiB
Java
package com.bumptech.glide;
|
|
|
|
import android.graphics.drawable.Drawable;
|
|
import android.widget.AbsListView;
|
|
import androidx.annotation.NonNull;
|
|
import androidx.annotation.Nullable;
|
|
import com.bumptech.glide.request.Request;
|
|
import com.bumptech.glide.request.target.SizeReadyCallback;
|
|
import com.bumptech.glide.request.target.Target;
|
|
import com.bumptech.glide.request.transition.Transition;
|
|
import com.bumptech.glide.util.Util;
|
|
import java.util.List;
|
|
import java.util.Queue;
|
|
|
|
/* compiled from: r8-map-id-b9432e0f623b4a4bff4ba50a8a24c4aafad2c1e11092747b9fb5e6a22af5a940 */
|
|
/* loaded from: classes6.dex */
|
|
public class ListPreloader<T> implements AbsListView.OnScrollListener {
|
|
private int lastEnd;
|
|
private int lastStart;
|
|
private final int maxPreload;
|
|
private final PreloadSizeProvider<T> preloadDimensionProvider;
|
|
private final PreloadModelProvider<T> preloadModelProvider;
|
|
private final PreloadTargetQueue preloadTargetQueue;
|
|
private final RequestManager requestManager;
|
|
private int totalItemCount;
|
|
private int lastFirstVisible = -1;
|
|
private boolean isIncreasing = true;
|
|
|
|
/* compiled from: r8-map-id-b9432e0f623b4a4bff4ba50a8a24c4aafad2c1e11092747b9fb5e6a22af5a940 */
|
|
public interface PreloadModelProvider<U> {
|
|
@NonNull
|
|
List<U> getPreloadItems(int i);
|
|
|
|
@Nullable
|
|
RequestBuilder<?> getPreloadRequestBuilder(@NonNull U u);
|
|
}
|
|
|
|
/* compiled from: r8-map-id-b9432e0f623b4a4bff4ba50a8a24c4aafad2c1e11092747b9fb5e6a22af5a940 */
|
|
public interface PreloadSizeProvider<T> {
|
|
@Nullable
|
|
int[] getPreloadSize(@NonNull T t, int i, int i2);
|
|
}
|
|
|
|
/* compiled from: r8-map-id-b9432e0f623b4a4bff4ba50a8a24c4aafad2c1e11092747b9fb5e6a22af5a940 */
|
|
public static final class PreloadTargetQueue {
|
|
final Queue<PreloadTarget> queue;
|
|
|
|
public PreloadTargetQueue(int i) {
|
|
this.queue = Util.createQueue(i);
|
|
for (int i2 = 0; i2 < i; i2++) {
|
|
this.queue.offer(new PreloadTarget());
|
|
}
|
|
}
|
|
|
|
public PreloadTarget next(int i, int i2) {
|
|
PreloadTarget poll = this.queue.poll();
|
|
this.queue.offer(poll);
|
|
poll.photoWidth = i;
|
|
poll.photoHeight = i2;
|
|
return poll;
|
|
}
|
|
}
|
|
|
|
public ListPreloader(@NonNull RequestManager requestManager, @NonNull PreloadModelProvider<T> preloadModelProvider, @NonNull PreloadSizeProvider<T> preloadSizeProvider, int i) {
|
|
this.requestManager = requestManager;
|
|
this.preloadModelProvider = preloadModelProvider;
|
|
this.preloadDimensionProvider = preloadSizeProvider;
|
|
this.maxPreload = i;
|
|
this.preloadTargetQueue = new PreloadTargetQueue(i + 1);
|
|
}
|
|
|
|
private void cancelAll() {
|
|
for (int i = 0; i < this.preloadTargetQueue.queue.size(); i++) {
|
|
this.requestManager.clear(this.preloadTargetQueue.next(0, 0));
|
|
}
|
|
}
|
|
|
|
private void preload(int i, int i2) {
|
|
int min;
|
|
int i3;
|
|
if (i < i2) {
|
|
i3 = Math.max(this.lastEnd, i);
|
|
min = i2;
|
|
} else {
|
|
min = Math.min(this.lastStart, i);
|
|
i3 = i2;
|
|
}
|
|
int min2 = Math.min(this.totalItemCount, min);
|
|
int min3 = Math.min(this.totalItemCount, Math.max(0, i3));
|
|
if (i < i2) {
|
|
for (int i4 = min3; i4 < min2; i4++) {
|
|
preloadAdapterPosition(this.preloadModelProvider.getPreloadItems(i4), i4, true);
|
|
}
|
|
} else {
|
|
for (int i5 = min2 - 1; i5 >= min3; i5--) {
|
|
preloadAdapterPosition(this.preloadModelProvider.getPreloadItems(i5), i5, false);
|
|
}
|
|
}
|
|
this.lastStart = min3;
|
|
this.lastEnd = min2;
|
|
}
|
|
|
|
private void preloadAdapterPosition(List<T> list, int i, boolean z) {
|
|
int size = list.size();
|
|
if (z) {
|
|
for (int i2 = 0; i2 < size; i2++) {
|
|
preloadItem(list.get(i2), i, i2);
|
|
}
|
|
return;
|
|
}
|
|
for (int i3 = size - 1; i3 >= 0; i3--) {
|
|
preloadItem(list.get(i3), i, i3);
|
|
}
|
|
}
|
|
|
|
private void preloadItem(@Nullable T t, int i, int i2) {
|
|
int[] preloadSize;
|
|
RequestBuilder<?> preloadRequestBuilder;
|
|
if (t == null || (preloadSize = this.preloadDimensionProvider.getPreloadSize(t, i, i2)) == null || (preloadRequestBuilder = this.preloadModelProvider.getPreloadRequestBuilder(t)) == null) {
|
|
return;
|
|
}
|
|
preloadRequestBuilder.into((RequestBuilder<?>) this.preloadTargetQueue.next(preloadSize[0], preloadSize[1]));
|
|
}
|
|
|
|
@Override // android.widget.AbsListView.OnScrollListener
|
|
public void onScroll(AbsListView absListView, int i, int i2, int i3) {
|
|
if (this.totalItemCount == 0 && i3 == 0) {
|
|
return;
|
|
}
|
|
this.totalItemCount = i3;
|
|
int i4 = this.lastFirstVisible;
|
|
if (i > i4) {
|
|
preload(i2 + i, true);
|
|
} else if (i < i4) {
|
|
preload(i, false);
|
|
}
|
|
this.lastFirstVisible = i;
|
|
}
|
|
|
|
/* compiled from: r8-map-id-b9432e0f623b4a4bff4ba50a8a24c4aafad2c1e11092747b9fb5e6a22af5a940 */
|
|
public static final class PreloadTarget implements Target<Object> {
|
|
int photoHeight;
|
|
int photoWidth;
|
|
|
|
@Nullable
|
|
private Request request;
|
|
|
|
@Override // com.bumptech.glide.request.target.Target
|
|
@Nullable
|
|
public Request getRequest() {
|
|
return this.request;
|
|
}
|
|
|
|
@Override // com.bumptech.glide.request.target.Target
|
|
public void getSize(@NonNull SizeReadyCallback sizeReadyCallback) {
|
|
sizeReadyCallback.onSizeReady(this.photoWidth, this.photoHeight);
|
|
}
|
|
|
|
@Override // com.bumptech.glide.request.target.Target
|
|
public void setRequest(@Nullable Request request) {
|
|
this.request = request;
|
|
}
|
|
|
|
@Override // com.bumptech.glide.manager.LifecycleListener
|
|
public void onDestroy() {
|
|
}
|
|
|
|
@Override // com.bumptech.glide.manager.LifecycleListener
|
|
public void onStart() {
|
|
}
|
|
|
|
@Override // com.bumptech.glide.manager.LifecycleListener
|
|
public void onStop() {
|
|
}
|
|
|
|
@Override // com.bumptech.glide.request.target.Target
|
|
public void onLoadCleared(@Nullable Drawable drawable) {
|
|
}
|
|
|
|
@Override // com.bumptech.glide.request.target.Target
|
|
public void onLoadFailed(@Nullable Drawable drawable) {
|
|
}
|
|
|
|
@Override // com.bumptech.glide.request.target.Target
|
|
public void onLoadStarted(@Nullable Drawable drawable) {
|
|
}
|
|
|
|
@Override // com.bumptech.glide.request.target.Target
|
|
public void removeCallback(@NonNull SizeReadyCallback sizeReadyCallback) {
|
|
}
|
|
|
|
@Override // com.bumptech.glide.request.target.Target
|
|
public void onResourceReady(@NonNull Object obj, @Nullable Transition<? super Object> transition) {
|
|
}
|
|
}
|
|
|
|
@Override // android.widget.AbsListView.OnScrollListener
|
|
public void onScrollStateChanged(AbsListView absListView, int i) {
|
|
}
|
|
|
|
private void preload(int i, boolean z) {
|
|
if (this.isIncreasing != z) {
|
|
this.isIncreasing = z;
|
|
cancelAll();
|
|
}
|
|
int i2 = this.maxPreload;
|
|
if (!z) {
|
|
i2 = -i2;
|
|
}
|
|
preload(i, i2 + i);
|
|
}
|
|
}
|