fix issues with fade animation on palette bitmap wrapper
This commit is contained in:
parent
fb87d6b946
commit
5085bbc1e7
7 changed files with 37 additions and 10 deletions
|
|
@ -34,6 +34,6 @@ public class CustomGlideModule implements GlideModule {
|
|||
|
||||
@Override
|
||||
public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) {
|
||||
registry.register(Bitmap.class, BitmapPaletteWrapper.class, new BitmapPaletteTranscoder());
|
||||
registry.register(Bitmap.class, BitmapPaletteWrapper.class, new BitmapPaletteTranscoder(glide.getBitmapPool()));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,10 +12,10 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
|||
import com.bumptech.glide.load.resource.bitmap.BitmapTransitionOptions;
|
||||
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
|
||||
import com.bumptech.glide.request.RequestOptions;
|
||||
import com.bumptech.glide.request.transition.ViewAnimationFactory;
|
||||
import com.bumptech.glide.signature.ObjectKey;
|
||||
import com.dkanada.gramophone.App;
|
||||
import com.dkanada.gramophone.R;
|
||||
import com.dkanada.gramophone.glide.palette.BitmapPaletteCrossFadeFactory;
|
||||
import com.dkanada.gramophone.glide.palette.BitmapPaletteWrapper;
|
||||
|
||||
import org.jellyfin.apiclient.model.dto.ImageOptions;
|
||||
|
|
@ -26,7 +26,6 @@ import static com.bumptech.glide.GenericTransitionOptions.with;
|
|||
public class CustomGlideRequest {
|
||||
public static final DiskCacheStrategy DEFAULT_DISK_CACHE_STRATEGY = DiskCacheStrategy.ALL;
|
||||
public static final int DEFAULT_IMAGE = R.drawable.default_album_art;
|
||||
public static final int DEFAULT_ANIMATION = android.R.anim.fade_in;
|
||||
|
||||
public static class Builder {
|
||||
final RequestManager requestManager;
|
||||
|
|
@ -55,7 +54,7 @@ public class CustomGlideRequest {
|
|||
Object uri = item != null ? createUrl(item) : DEFAULT_IMAGE;
|
||||
|
||||
return requestManager.load(uri)
|
||||
.transition(new DrawableTransitionOptions().crossFade());
|
||||
.transition(DrawableTransitionOptions.withCrossFade());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -70,7 +69,7 @@ public class CustomGlideRequest {
|
|||
Object uri = builder.item != null ? createUrl(builder.item) : DEFAULT_IMAGE;
|
||||
|
||||
return builder.requestManager.asBitmap().load(uri)
|
||||
.transition(new BitmapTransitionOptions().crossFade());
|
||||
.transition(BitmapTransitionOptions.withCrossFade());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -87,7 +86,7 @@ public class CustomGlideRequest {
|
|||
Object uri = builder.item != null ? createUrl(builder.item) : DEFAULT_IMAGE;
|
||||
|
||||
return builder.requestManager.as(BitmapPaletteWrapper.class).load(uri)
|
||||
.transition(with(new ViewAnimationFactory<>(DEFAULT_ANIMATION)));
|
||||
.transition(with(new BitmapPaletteCrossFadeFactory()));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -27,7 +27,6 @@ public abstract class CustomPaletteTarget extends BitmapPaletteTarget {
|
|||
public void onResourceReady(@NonNull BitmapPaletteWrapper resource, Transition<? super BitmapPaletteWrapper> glideAnimation) {
|
||||
super.onResourceReady(resource, glideAnimation);
|
||||
onColorReady(ThemeUtil.getColor(resource.getPalette(), getDefaultFooterColor()));
|
||||
view.setImageBitmap(resource.getBitmap());
|
||||
}
|
||||
|
||||
protected int getDefaultFooterColor() {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
package com.dkanada.gramophone.glide.palette;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
|
||||
import com.bumptech.glide.request.transition.BitmapContainerTransitionFactory;
|
||||
import com.bumptech.glide.request.transition.DrawableCrossFadeFactory;
|
||||
|
||||
public class BitmapPaletteCrossFadeFactory extends BitmapContainerTransitionFactory<BitmapPaletteWrapper> {
|
||||
public BitmapPaletteCrossFadeFactory() {
|
||||
super(new DrawableCrossFadeFactory.Builder().build());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Bitmap getBitmap(BitmapPaletteWrapper current) {
|
||||
return current.getBitmap();
|
||||
}
|
||||
}
|
||||
|
|
@ -3,13 +3,16 @@ package com.dkanada.gramophone.glide.palette;
|
|||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.bumptech.glide.load.engine.Resource;
|
||||
import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
|
||||
import com.bumptech.glide.util.Util;
|
||||
|
||||
public class BitmapPaletteResource implements Resource<BitmapPaletteWrapper> {
|
||||
private final BitmapPaletteWrapper bitmapPaletteWrapper;
|
||||
private final BitmapPool bitmapPool;
|
||||
|
||||
public BitmapPaletteResource(BitmapPaletteWrapper bitmapPaletteWrapper) {
|
||||
public BitmapPaletteResource(BitmapPaletteWrapper bitmapPaletteWrapper, BitmapPool bitmapPool) {
|
||||
this.bitmapPaletteWrapper = bitmapPaletteWrapper;
|
||||
this.bitmapPool = bitmapPool;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
|
|
@ -31,6 +34,6 @@ public class BitmapPaletteResource implements Resource<BitmapPaletteWrapper> {
|
|||
|
||||
@Override
|
||||
public void recycle() {
|
||||
bitmapPaletteWrapper.getBitmap().recycle();
|
||||
bitmapPool.put(bitmapPaletteWrapper.getBitmap());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,5 +11,7 @@ public class BitmapPaletteTarget extends ImageViewTarget<BitmapPaletteWrapper> {
|
|||
|
||||
@Override
|
||||
protected void setResource(BitmapPaletteWrapper bitmapPaletteWrapper) {
|
||||
if (bitmapPaletteWrapper == null) return;
|
||||
view.setImageBitmap(bitmapPaletteWrapper.getBitmap());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,13 +6,20 @@ import androidx.annotation.NonNull;
|
|||
|
||||
import com.bumptech.glide.load.Options;
|
||||
import com.bumptech.glide.load.engine.Resource;
|
||||
import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
|
||||
import com.bumptech.glide.load.resource.transcode.ResourceTranscoder;
|
||||
import com.dkanada.gramophone.util.ThemeUtil;
|
||||
|
||||
public class BitmapPaletteTranscoder implements ResourceTranscoder<Bitmap, BitmapPaletteWrapper> {
|
||||
private final BitmapPool bitmapPool;
|
||||
|
||||
public BitmapPaletteTranscoder(BitmapPool bitmapPool) {
|
||||
this.bitmapPool = bitmapPool;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Resource<BitmapPaletteWrapper> transcode(@NonNull Resource<Bitmap> resource, @NonNull Options options) {
|
||||
BitmapPaletteWrapper bitmapPaletteWrapper = new BitmapPaletteWrapper(resource.get(), ThemeUtil.generatePalette(resource.get()));
|
||||
return new BitmapPaletteResource(bitmapPaletteWrapper);
|
||||
return new BitmapPaletteResource(bitmapPaletteWrapper, bitmapPool);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue