remove some dead code for glide

This commit is contained in:
dkanada 2020-09-22 00:54:44 +09:00
commit a88956578a
7 changed files with 38 additions and 92 deletions

View file

@ -46,6 +46,8 @@ android {
dependencies { dependencies {
implementation 'com.github.jellyfin.jellyfin-apiclient-java:android:0.7.3' implementation 'com.github.jellyfin.jellyfin-apiclient-java:android:0.7.3'
implementation 'com.github.woltapp:blurhash:f41a23cc50'
implementation 'com.github.florent37:glidepalette:2.1.2'
implementation 'com.google.android.exoplayer:exoplayer:2.11.4' implementation 'com.google.android.exoplayer:exoplayer:2.11.4'
implementation 'com.google.android.material:material:1.2.1' implementation 'com.google.android.material:material:1.2.1'

View file

@ -4,10 +4,8 @@ import android.content.Context;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.Canvas; import android.graphics.Canvas;
import android.graphics.Paint; import android.graphics.Paint;
import android.os.Build;
import android.renderscript.Allocation; import android.renderscript.Allocation;
import android.renderscript.Element; import android.renderscript.Element;
import android.renderscript.RSRuntimeException;
import android.renderscript.RenderScript; import android.renderscript.RenderScript;
import android.renderscript.ScriptIntrinsicBlur; import android.renderscript.ScriptIntrinsicBlur;
import androidx.annotation.FloatRange; import androidx.annotation.FloatRange;
@ -15,8 +13,6 @@ import androidx.annotation.NonNull;
import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation; import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;
import com.dkanada.gramophone.BuildConfig;
import com.dkanada.gramophone.helper.StackBlur;
import com.dkanada.gramophone.util.ImageUtil; import com.dkanada.gramophone.util.ImageUtil;
import java.security.MessageDigest; import java.security.MessageDigest;
@ -28,25 +24,16 @@ public class BlurTransformation extends BitmapTransformation {
private float blurRadius; private float blurRadius;
private int sampling; private int sampling;
private void init(Builder builder) { private BlurTransformation(Builder builder) {
super();
this.context = builder.context; this.context = builder.context;
this.blurRadius = builder.blurRadius; this.blurRadius = builder.blurRadius;
this.sampling = builder.sampling; this.sampling = builder.sampling;
} }
private BlurTransformation(Builder builder) {
super();
init(builder);
}
private BlurTransformation(Builder builder, BitmapPool bitmapPool) {
super();
init(builder);
}
public static class Builder { public static class Builder {
private Context context; private Context context;
private BitmapPool bitmapPool;
private float blurRadius = DEFAULT_BLUR_RADIUS; private float blurRadius = DEFAULT_BLUR_RADIUS;
private int sampling; private int sampling;
@ -72,25 +59,13 @@ public class BlurTransformation extends BitmapTransformation {
return this; return this;
} }
/**
* @param bitmapPool The BitmapPool to use.
* @return the same Builder
*/
public Builder bitmapPool(BitmapPool bitmapPool) {
this.bitmapPool = bitmapPool;
return this;
}
public BlurTransformation build() { public BlurTransformation build() {
if (bitmapPool != null) {
return new BlurTransformation(this, bitmapPool);
}
return new BlurTransformation(this); return new BlurTransformation(this);
} }
} }
@Override @Override
protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) { protected Bitmap transform(@NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) {
int sampling; int sampling;
if (this.sampling == 0) { if (this.sampling == 0) {
sampling = ImageUtil.calculateInSampleSize(toTransform.getWidth(), toTransform.getHeight(), 100); sampling = ImageUtil.calculateInSampleSize(toTransform.getWidth(), toTransform.getHeight(), 100);
@ -104,39 +79,25 @@ public class BlurTransformation extends BitmapTransformation {
int scaledHeight = height / sampling; int scaledHeight = height / sampling;
Bitmap out = pool.get(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888); Bitmap out = pool.get(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888);
if (out == null) {
out = Bitmap.createBitmap(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888);
}
Canvas canvas = new Canvas(out); Canvas canvas = new Canvas(out);
canvas.scale(1 / (float) sampling, 1 / (float) sampling); canvas.scale(1 / (float) sampling, 1 / (float) sampling);
Paint paint = new Paint(); Paint paint = new Paint();
paint.setFlags(Paint.FILTER_BITMAP_FLAG); paint.setFlags(Paint.FILTER_BITMAP_FLAG);
canvas.drawBitmap(toTransform, 0, 0, paint); canvas.drawBitmap(toTransform, 0, 0, paint);
if (Build.VERSION.SDK_INT >= 17) { final RenderScript renderScript = RenderScript.create(context.getApplicationContext());
try { final Allocation input = Allocation.createFromBitmap(renderScript, out, Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT);
final RenderScript rs = RenderScript.create(context.getApplicationContext()); final Allocation output = Allocation.createTyped(renderScript, input.getType());
final Allocation input = Allocation.createFromBitmap(rs, out, Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT); final ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(renderScript, Element.U8_4(renderScript));
final Allocation output = Allocation.createTyped(rs, input.getType());
final ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
script.setRadius(blurRadius); script.setRadius(blurRadius);
script.setInput(input); script.setInput(input);
script.forEach(output); script.forEach(output);
output.copyTo(out); output.copyTo(out);
renderScript.destroy();
rs.destroy(); return out;
return out;
} catch (RSRuntimeException e) {
// on some devices RenderScript.create() throws: android.support.v8.renderscript.RSRuntimeException: Error loading libRSSupport library
if (BuildConfig.DEBUG) e.printStackTrace();
}
}
return StackBlur.blur(out, blurRadius);
} }
@Override @Override

View file

@ -9,8 +9,10 @@ import androidx.annotation.NonNull;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.bumptech.glide.GlideBuilder; import com.bumptech.glide.GlideBuilder;
import com.bumptech.glide.Registry; import com.bumptech.glide.Registry;
import com.bumptech.glide.load.DecodeFormat;
import com.bumptech.glide.load.engine.cache.DiskLruCacheFactory; import com.bumptech.glide.load.engine.cache.DiskLruCacheFactory;
import com.bumptech.glide.module.GlideModule; import com.bumptech.glide.module.GlideModule;
import com.bumptech.glide.request.RequestOptions;
import com.dkanada.gramophone.App; import com.dkanada.gramophone.App;
import com.dkanada.gramophone.glide.palette.BitmapPaletteTranscoder; import com.dkanada.gramophone.glide.palette.BitmapPaletteTranscoder;
import com.dkanada.gramophone.glide.palette.BitmapPaletteWrapper; import com.dkanada.gramophone.glide.palette.BitmapPaletteWrapper;
@ -21,19 +23,17 @@ import java.io.File;
public class CustomGlideModule implements GlideModule { public class CustomGlideModule implements GlideModule {
@Override @Override
public void applyOptions(@NonNull Context context, GlideBuilder builder) { public void applyOptions(@NonNull Context context, GlideBuilder builder) {
builder.setDiskCache(new DiskLruCacheFactory(new DiskLruCacheFactory.CacheDirectoryGetter() { File file = PreferenceUtil.getInstance(context).getExternalDirectory()
@Override ? new File(Environment.getExternalStorageDirectory() + "/Gelli/images")
public File getCacheDirectory() { : new File(App.getInstance().getApplicationInfo().dataDir + "/glide");
String folder = "/Gelli/images";
return PreferenceUtil.getInstance(App.getInstance()).getExternalDirectory() int size = PreferenceUtil.getInstance(context).getCacheSize();
? new File(Environment.getExternalStorageDirectory() + folder) builder.setDiskCache(new DiskLruCacheFactory(() -> file, size));
: new File(App.getInstance().getApplicationInfo().dataDir + folder); builder.setDefaultRequestOptions(new RequestOptions().format(DecodeFormat.PREFER_RGB_565));
}
}, PreferenceUtil.getInstance(App.getInstance()).getCacheSize()));
} }
@Override @Override
public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) { public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) {
registry.register(Bitmap.class, BitmapPaletteWrapper.class, new BitmapPaletteTranscoder(glide.getBitmapPool())); registry.register(Bitmap.class, BitmapPaletteWrapper.class, new BitmapPaletteTranscoder());
} }
} }

View file

@ -8,13 +8,11 @@ import androidx.annotation.NonNull;
import com.bumptech.glide.RequestBuilder; import com.bumptech.glide.RequestBuilder;
import com.bumptech.glide.RequestManager; import com.bumptech.glide.RequestManager;
import com.bumptech.glide.load.Key;
import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.resource.bitmap.BitmapTransitionOptions; 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.RequestOptions;
import com.bumptech.glide.request.transition.ViewAnimationFactory; import com.bumptech.glide.request.transition.ViewAnimationFactory;
import com.bumptech.glide.signature.MediaStoreSignature; import com.bumptech.glide.signature.ObjectKey;
import com.dkanada.gramophone.App; import com.dkanada.gramophone.App;
import com.dkanada.gramophone.R; import com.dkanada.gramophone.R;
import com.dkanada.gramophone.glide.palette.BitmapPaletteWrapper; import com.dkanada.gramophone.glide.palette.BitmapPaletteWrapper;
@ -98,7 +96,7 @@ public class CustomGlideRequest {
.centerCrop() .centerCrop()
.error(DEFAULT_IMAGE) .error(DEFAULT_IMAGE)
.diskCacheStrategy(DEFAULT_DISK_CACHE_STRATEGY) .diskCacheStrategy(DEFAULT_DISK_CACHE_STRATEGY)
.signature(createSignature(item)); .signature(new ObjectKey(item != null ? item : 0));
} }
public static String createUrl(String item) { public static String createUrl(String item) {
@ -108,8 +106,4 @@ public class CustomGlideRequest {
return App.getApiClient().GetImageUrl(item, options); return App.getApiClient().GetImageUrl(item, options);
} }
public static Key createSignature(String item) {
return new MediaStoreSignature("image/jpeg", item != null ? item.hashCode() : 0, 0);
}
} }

View file

@ -3,17 +3,13 @@ package com.dkanada.gramophone.glide.palette;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import com.bumptech.glide.load.engine.Resource; import com.bumptech.glide.load.engine.Resource;
import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
import com.bumptech.glide.util.Util; import com.bumptech.glide.util.Util;
public class BitmapPaletteResource implements Resource<BitmapPaletteWrapper> { public class BitmapPaletteResource implements Resource<BitmapPaletteWrapper> {
private final BitmapPaletteWrapper bitmapPaletteWrapper; private final BitmapPaletteWrapper bitmapPaletteWrapper;
private final BitmapPool bitmapPool;
public BitmapPaletteResource(BitmapPaletteWrapper bitmapPaletteWrapper, BitmapPool bitmapPool) { public BitmapPaletteResource(BitmapPaletteWrapper bitmapPaletteWrapper) {
this.bitmapPaletteWrapper = bitmapPaletteWrapper; this.bitmapPaletteWrapper = bitmapPaletteWrapper;
this.bitmapPool = bitmapPool;
} }
@NonNull @NonNull
@ -22,6 +18,7 @@ public class BitmapPaletteResource implements Resource<BitmapPaletteWrapper> {
return BitmapPaletteWrapper.class; return BitmapPaletteWrapper.class;
} }
@NonNull
@Override @Override
public BitmapPaletteWrapper get() { public BitmapPaletteWrapper get() {
return bitmapPaletteWrapper; return bitmapPaletteWrapper;

View file

@ -6,21 +6,13 @@ import androidx.annotation.NonNull;
import com.bumptech.glide.load.Options; import com.bumptech.glide.load.Options;
import com.bumptech.glide.load.engine.Resource; 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.bumptech.glide.load.resource.transcode.ResourceTranscoder;
import com.dkanada.gramophone.util.ThemeUtil; import com.dkanada.gramophone.util.ThemeUtil;
public class BitmapPaletteTranscoder implements ResourceTranscoder<Bitmap, BitmapPaletteWrapper> { public class BitmapPaletteTranscoder implements ResourceTranscoder<Bitmap, BitmapPaletteWrapper> {
private final BitmapPool bitmapPool;
public BitmapPaletteTranscoder(BitmapPool bitmapPool) {
this.bitmapPool = bitmapPool;
}
@Override @Override
public Resource<BitmapPaletteWrapper> transcode(@NonNull Resource<Bitmap> resource, @NonNull Options options) { public Resource<BitmapPaletteWrapper> transcode(@NonNull Resource<Bitmap> resource, @NonNull Options options) {
Bitmap bitmap = resource.get(); BitmapPaletteWrapper bitmapPaletteWrapper = new BitmapPaletteWrapper(resource.get(), ThemeUtil.generatePalette(resource.get()));
BitmapPaletteWrapper bitmapPaletteWrapper = new BitmapPaletteWrapper(bitmap, ThemeUtil.generatePalette(bitmap)); return new BitmapPaletteResource(bitmapPaletteWrapper);
return new BitmapPaletteResource(bitmapPaletteWrapper, bitmapPool);
} }
} }

View file

@ -4,19 +4,19 @@ import android.graphics.Bitmap;
import androidx.palette.graphics.Palette; import androidx.palette.graphics.Palette;
public class BitmapPaletteWrapper { public class BitmapPaletteWrapper {
private final Bitmap mBitmap; private final Bitmap bitmap;
private final Palette mPalette; private final Palette palette;
public BitmapPaletteWrapper(Bitmap bitmap, Palette palette) { public BitmapPaletteWrapper(Bitmap bitmap, Palette palette) {
mBitmap = bitmap; this.bitmap = bitmap;
mPalette = palette; this.palette = palette;
} }
public Bitmap getBitmap() { public Bitmap getBitmap() {
return mBitmap; return bitmap;
} }
public Palette getPalette() { public Palette getPalette() {
return mPalette; return palette;
} }
} }