Commit 875d6e44 authored by qq247321453's avatar qq247321453

update glide

parent 511d83d1
...@@ -93,7 +93,8 @@ dependencies { ...@@ -93,7 +93,8 @@ dependencies {
// implementation 'com.android.support:design:' + rootProject.ext.supportVersion // implementation 'com.android.support:design:' + rootProject.ext.supportVersion
implementation 'org.jdeferred:jdeferred-android-aar:1.2.4' implementation 'org.jdeferred:jdeferred-android-aar:1.2.4'
implementation 'com.github.bumptech.glide:glide:3.7.0' implementation 'com.github.bumptech.glide:glide:4.12.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
implementation('com.github.chrisbanes.photoview:library:1.2.4') { implementation('com.github.chrisbanes.photoview:library:1.2.4') {
implementation 'com.github.chrisbanes.photoview:library:1.2.4' implementation 'com.github.chrisbanes.photoview:library:1.2.4'
exclude group: 'com.android.support', module: 'support-v4' // exclude group: 'com.android.support', module: 'support-v4' //
......
...@@ -17,9 +17,24 @@ ...@@ -17,9 +17,24 @@
#} #}
-keepclassmembers class * implements cn.garymb.ygomobile.core.IrrlichtBridge.* { public *;} -keepclassmembers class * implements cn.garymb.ygomobile.core.IrrlichtBridge.* { public *;}
-keepclassmembers class * implements android.os.Parcelable { public *;} -keepclassmembers class * implements android.os.Parcelable { public *;}
-keep class * implements com.bumptech.glide.module.GlideModule{
*; #############
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep class * extends com.bumptech.glide.module.AppGlideModule {
<init>(...);
}
-keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
**[] $VALUES;
public *;
} }
-keep class com.bumptech.glide.load.data.ParcelFileDescriptorRewinder$InternalRewinder {
*** rewind();
}
# for DexGuard only
#-keepresourcexmlelements manifest/application/meta-data@value=GlideModule
#############
-keep class net.kk.xml.**{ -keep class net.kk.xml.**{
public *; public *;
protected *; protected *;
......
...@@ -6,13 +6,10 @@ import android.content.Context; ...@@ -6,13 +6,10 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.ApplicationInfo; import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.util.Log;
import android.widget.ImageView; import android.widget.ImageView;
import androidx.appcompat.app.AppCompatDelegate; import androidx.appcompat.app.AppCompatDelegate;
import com.bumptech.glide.Glide;
import com.ourygo.assistant.util.DuelAssistantManagement;
import com.tencent.bugly.Bugly; import com.tencent.bugly.Bugly;
import com.tencent.bugly.beta.Beta; import com.tencent.bugly.beta.Beta;
import com.tencent.smtt.export.external.TbsCoreSettings; import com.tencent.smtt.export.external.TbsCoreSettings;
...@@ -26,6 +23,7 @@ import cn.garymb.ygomobile.lite.BuildConfig; ...@@ -26,6 +23,7 @@ import cn.garymb.ygomobile.lite.BuildConfig;
import cn.garymb.ygomobile.lite.R; import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ui.home.MainActivity; import cn.garymb.ygomobile.ui.home.MainActivity;
import cn.garymb.ygomobile.utils.CrashHandler; import cn.garymb.ygomobile.utils.CrashHandler;
import cn.garymb.ygomobile.utils.glide.GlideCompat;
import cn.garymb.ygomobile.utils.ProcessUtils; import cn.garymb.ygomobile.utils.ProcessUtils;
public class App extends GameApplication { public class App extends GameApplication {
...@@ -164,7 +162,7 @@ public class App extends GameApplication { ...@@ -164,7 +162,7 @@ public class App extends GameApplication {
ISNav.getInstance().init(new ImageLoader() { ISNav.getInstance().init(new ImageLoader() {
@Override @Override
public void displayImage(Context context, String path, ImageView imageView) { public void displayImage(Context context, String path, ImageView imageView) {
Glide.with(context).load(path).into(imageView); GlideCompat.with(context).load(path).into(imageView);
} }
}); });
} }
......
...@@ -12,7 +12,6 @@ import androidx.annotation.Nullable; ...@@ -12,7 +12,6 @@ import androidx.annotation.Nullable;
import org.json.JSONArray; import org.json.JSONArray;
import java.io.File; import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
...@@ -224,13 +223,23 @@ public class AppsSettings { ...@@ -224,13 +223,23 @@ public class AppsSettings {
return new File(getDataBasePath(), Constants.DATABASE_NAME); return new File(getDataBasePath(), Constants.DATABASE_NAME);
} }
public File[] getExpansionFiles(){
return new File(AppsSettings.get().getResourcePath(), Constants.CORE_EXPANSIONS)
.listFiles((file) -> {
if(!file.isFile()){
return false;
}
String s_name = file.getName().toLowerCase();
return s_name.endsWith(".zip") || s_name.endsWith(".ypk");
});
}
private void makeCdbList(List<String> pathList) { private void makeCdbList(List<String> pathList) {
if (isReadExpansions()) { if (isReadExpansions()) {
File expansionsDir = getExpansionsPath(); File expansionsDir = getExpansionsPath();
if (expansionsDir.exists()) { if (expansionsDir.exists()) {
File[] cdbs = expansionsDir.listFiles(file -> { File[] cdbs = expansionsDir.listFiles(file -> file.isFile() && file.getName().toLowerCase(Locale.US).endsWith(".cdb"));
return file.isFile() && file.getName().toLowerCase(Locale.US).endsWith(".cdb");
});
if (cdbs != null) { if (cdbs != null) {
try { try {
Arrays.sort(cdbs, (file, t1) -> { Arrays.sort(cdbs, (file, t1) -> {
...@@ -259,25 +268,9 @@ public class AppsSettings { ...@@ -259,25 +268,9 @@ public class AppsSettings {
if (isReadExpansions()) { if (isReadExpansions()) {
File expansionsDir = getExpansionsPath(); File expansionsDir = getExpansionsPath();
if (expansionsDir.exists()) { if (expansionsDir.exists()) {
File[] zips = expansionsDir.listFiles(new FileFilter() { File[] files = getExpansionFiles();
@Override if (files != null) {
public boolean accept(File file) { for (File file : files) {
return file.isFile() && file.getName().toLowerCase(Locale.US).endsWith(".zip");
}
});
if (zips != null) {
for (File file : zips) {
pathList.add(file.getAbsolutePath());
}
}
File[] ypks = expansionsDir.listFiles(new FileFilter() {
@Override
public boolean accept(File file) {
return file.isFile() && file.getName().toLowerCase(Locale.US).endsWith(".ypk");
}
});
if (ypks != null) {
for (File file : ypks) {
pathList.add(file.getAbsolutePath()); pathList.add(file.getAbsolutePath());
} }
} }
......
...@@ -93,8 +93,10 @@ public interface Constants { ...@@ -93,8 +93,10 @@ public interface Constants {
String YDK_FILE_EX = ".ydk"; String YDK_FILE_EX = ".ydk";
int[] CORE_SKIN_BG_SIZE = new int[]{1280, 720}; int[] CORE_SKIN_BG_SIZE = new int[]{1280, 720};
int[] CORE_SKIN_CARD_MINI_SIZE = new int[]{44, 64};
int[] CORE_SKIN_CARD_SMALL_SIZE = new int[]{177, 254}; int[] CORE_SKIN_CARD_SMALL_SIZE = new int[]{177, 254};
int[] CORE_SKIN_CARD_MIDDLE_SIZE = new int[]{531, 762}; //原图
int[] CORE_SKIN_CARD_MIDDLE_SIZE = new int[]{397, 578};
int[] CORE_SKIN_CARD_COVER_SIZE = new int[]{177, 254}; int[] CORE_SKIN_CARD_COVER_SIZE = new int[]{177, 254};
int[] CORE_SKIN_AVATAR_SIZE = new int[]{128, 128}; int[] CORE_SKIN_AVATAR_SIZE = new int[]{128, 128};
......
...@@ -17,11 +17,9 @@ import android.view.WindowManager; ...@@ -17,11 +17,9 @@ import android.view.WindowManager;
import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.target.ViewTarget; import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
import com.bumptech.glide.signature.StringSignature; import com.bumptech.glide.signature.MediaStoreSignature;
import com.tencent.bugly.proguard.C;
import java.io.File; import java.io.File;
import java.util.HashMap; import java.util.HashMap;
...@@ -31,6 +29,7 @@ import cn.garymb.ygomobile.core.IrrlichtBridge; ...@@ -31,6 +29,7 @@ import cn.garymb.ygomobile.core.IrrlichtBridge;
import cn.garymb.ygomobile.lite.R; import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ui.plus.ViewTargetPlus; import cn.garymb.ygomobile.ui.plus.ViewTargetPlus;
import cn.garymb.ygomobile.utils.ComponentUtils; import cn.garymb.ygomobile.utils.ComponentUtils;
import cn.garymb.ygomobile.utils.glide.GlideCompat;
public class YGOStarter { public class YGOStarter {
...@@ -83,12 +82,13 @@ public class YGOStarter { ...@@ -83,12 +82,13 @@ public class YGOStarter {
File bgfile = new File(AppsSettings.get().getCoreSkinPath(), Constants.CORE_SKIN_BG); File bgfile = new File(AppsSettings.get().getCoreSkinPath(), Constants.CORE_SKIN_BG);
if (bgfile.exists()) { if (bgfile.exists()) {
// .getApplicationContext() // .getApplicationContext()
Glide.with(activity).load(bgfile) GlideCompat.with(activity).load(bgfile)
.signature(new StringSignature(bgfile.getName() + bgfile.lastModified())) .signature(new MediaStoreSignature("image/*", bgfile.lastModified(), 0))
.transition(DrawableTransitionOptions.withCrossFade())
.diskCacheStrategy(DiskCacheStrategy.NONE) .diskCacheStrategy(DiskCacheStrategy.NONE)
.into(activityShowInfo.mViewTarget); .into(activityShowInfo.mViewTarget);
} else { } else {
Glide.with(activity.getApplicationContext()).load(R.drawable.bg).into(activityShowInfo.mViewTarget); GlideCompat.with(activity.getApplicationContext()).load(R.drawable.bg).into(activityShowInfo.mViewTarget);
} }
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//强制为横屏 activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//强制为横屏
setFullScreen(activity, activityShowInfo); setFullScreen(activity, activityShowInfo);
...@@ -188,7 +188,7 @@ public class YGOStarter { ...@@ -188,7 +188,7 @@ public class YGOStarter {
private static class ActivityShowInfo { private static class ActivityShowInfo {
//根布局 //根布局
View mRoot; View mRoot;
ViewTarget mViewTarget; ViewTargetPlus mViewTarget;
//是否显示了标题栏 //是否显示了标题栏
boolean hasSupperbar; boolean hasSupperbar;
//是否显示了标题栏 //是否显示了标题栏
......
package cn.garymb.ygomobile.loader; package cn.garymb.ygomobile.loader;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.net.Uri; import android.net.Uri;
import android.util.Log; import android.util.Log;
...@@ -9,16 +8,10 @@ import android.widget.ImageView; ...@@ -9,16 +8,10 @@ import android.widget.ImageView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.bumptech.glide.DrawableTypeRequest; import com.bumptech.glide.RequestBuilder;
import com.bumptech.glide.load.ResourceDecoder;
import com.bumptech.glide.load.engine.Resource;
import com.bumptech.glide.load.engine.bitmap_recycle.LruBitmapPool; import com.bumptech.glide.load.engine.bitmap_recycle.LruBitmapPool;
import com.bumptech.glide.load.model.ImageVideoWrapper; import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
import com.bumptech.glide.load.resource.bitmap.BitmapResource;
import com.bumptech.glide.load.resource.gifbitmap.GifBitmapWrapper;
import com.bumptech.glide.load.resource.gifbitmap.GifBitmapWrapperResource;
import com.bumptech.glide.signature.MediaStoreSignature; import com.bumptech.glide.signature.MediaStoreSignature;
import com.bumptech.glide.signature.StringSignature;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.Closeable; import java.io.Closeable;
...@@ -34,24 +27,32 @@ import java.util.zip.ZipFile; ...@@ -34,24 +27,32 @@ import java.util.zip.ZipFile;
import cn.garymb.ygomobile.AppsSettings; import cn.garymb.ygomobile.AppsSettings;
import cn.garymb.ygomobile.Constants; import cn.garymb.ygomobile.Constants;
import cn.garymb.ygomobile.core.IrrlichtBridge;
import cn.garymb.ygomobile.lite.BuildConfig; import cn.garymb.ygomobile.lite.BuildConfig;
import cn.garymb.ygomobile.lite.R; import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.utils.FileUtils; import cn.garymb.ygomobile.utils.FileUtils;
import cn.garymb.ygomobile.utils.IOUtils; import cn.garymb.ygomobile.utils.IOUtils;
import cn.garymb.ygomobile.utils.NetUtils; import cn.garymb.ygomobile.utils.NetUtils;
import cn.garymb.ygomobile.utils.glide.GlideCompat;
import cn.garymb.ygomobile.utils.glide.StringSignature;
import ocgcore.data.Card; import ocgcore.data.Card;
import static com.bumptech.glide.Glide.with;
public class ImageLoader implements Closeable { public class ImageLoader implements Closeable {
public enum Type { public enum Type {
//origin size //origin size
origin, origin(0),
//44x64
@Deprecated
mini(1),
//177x254 //177x254
small, small(2),
//531x762 //531x762
middle middle(3);
private final int id;
Type(int id){this.id = id;}
public int getId() {
return id;
}
} }
private static class Cache { private static class Cache {
...@@ -67,7 +68,6 @@ public class ImageLoader implements Closeable { ...@@ -67,7 +68,6 @@ public class ImageLoader implements Closeable {
private final boolean useCache; private final boolean useCache;
private static final String TAG = ImageLoader.class.getSimpleName(); private static final String TAG = ImageLoader.class.getSimpleName();
private final Map<String, ZipFile> zipFileCache = new ConcurrentHashMap<>(); private final Map<String, ZipFile> zipFileCache = new ConcurrentHashMap<>();
private final LruBitmapPool mLruBitmapPool = new LruBitmapPool(128);
private final Map<Long, Cache> zipDataCache = new ConcurrentHashMap<>(); private final Map<Long, Cache> zipDataCache = new ConcurrentHashMap<>();
private ZipFile mDefaultZipFile; private ZipFile mDefaultZipFile;
private File mPicsFile; private File mPicsFile;
...@@ -134,7 +134,7 @@ public class ImageLoader implements Closeable { ...@@ -134,7 +134,7 @@ public class ImageLoader implements Closeable {
bindT(uri, name, imageview, pre, type); bindT(uri, name, imageview, pre, type);
} }
private <T> void setDefaults(@NonNull DrawableTypeRequest<T> resource, String name, private <T> void setDefaults(@NonNull RequestBuilder<Drawable> resource,
@Nullable com.bumptech.glide.load.Key signature, @Nullable com.bumptech.glide.load.Key signature,
@Nullable Drawable pre, @Nullable Drawable pre,
@NonNull Type type) { @NonNull Type type) {
...@@ -144,34 +144,31 @@ public class ImageLoader implements Closeable { ...@@ -144,34 +144,31 @@ public class ImageLoader implements Closeable {
resource.placeholder(R.drawable.unknown); resource.placeholder(R.drawable.unknown);
} }
resource.error(R.drawable.unknown); resource.error(R.drawable.unknown);
resource.animate(R.anim.push_in); resource.transition(DrawableTransitionOptions.withCrossFade());
if (type != Type.origin) { //都改为原图
int[] size = null; // if (type != Type.origin) {
switch (type) { // int[] size = null;
case small: // switch (type) {
size = Constants.CORE_SKIN_CARD_SMALL_SIZE; // case small:
break; // size = Constants.CORE_SKIN_CARD_SMALL_SIZE;
case middle: // break;
size = Constants.CORE_SKIN_CARD_MIDDLE_SIZE; // case middle:
break; // size = Constants.CORE_SKIN_CARD_MIDDLE_SIZE;
} // break;
if (size != null) { // }
resource.override(size[0], size[1]); // if (size != null) {
} // resource.override(size[0], size[1]);
} // }
// }
if (signature != null) { if (signature != null) {
resource.signature(signature); resource.signature(signature);
} }
String ex = FileUtils.getFileExpansion(name);
if ("bpg".equals(ex)) {
resource.decoder(new BpgResourceDecoder(name, mLruBitmapPool));
}
} }
private <T> void bindT(final T data, String name, ImageView imageview, Drawable pre, @NonNull Type type) { private <T> void bindT(final T data, String name, ImageView imageview, Drawable pre, @NonNull Type type) {
try { try {
DrawableTypeRequest<T> resource = with(imageview.getContext()).load(data); RequestBuilder<Drawable> resource = GlideCompat.with(imageview.getContext()).load(data);
setDefaults(resource, name, new StringSignature(name + ":" + type), pre, type); setDefaults(resource, new StringSignature(name + ":" + type), pre, type);
resource.into(imageview); resource.into(imageview);
} catch (Exception e) { } catch (Exception e) {
Log.e(TAG, "$", e); Log.e(TAG, "$", e);
...@@ -183,10 +180,10 @@ public class ImageLoader implements Closeable { ...@@ -183,10 +180,10 @@ public class ImageLoader implements Closeable {
Log.v(TAG, "bind file:" + file.getPath() + ", type=" + type); Log.v(TAG, "bind file:" + file.getPath() + ", type=" + type);
} }
try { try {
DrawableTypeRequest<File> resource = with(imageview.getContext()).load(file); RequestBuilder<Drawable> resource = GlideCompat.with(imageview.getContext()).load(file);
setDefaults(resource, file.getName(), setDefaults(resource,
new MediaStoreSignature("image/*", new MediaStoreSignature("image/*", file.lastModified(), Type.origin.getId()),
file.lastModified(), type.ordinal()), pre, type); pre, type);
resource.into(imageview); resource.into(imageview);
} catch (Exception e) { } catch (Exception e) {
Log.e(TAG, "$", e); Log.e(TAG, "$", e);
...@@ -244,6 +241,20 @@ public class ImageLoader implements Closeable { ...@@ -244,6 +241,20 @@ public class ImageLoader implements Closeable {
bindImage(imageview, code, null, type); bindImage(imageview, code, null, type);
} }
public static File getImageFile(long code){
for (String ex : Constants.IMAGE_EX) {
File file = new File(AppsSettings.get().getResourcePath(), Constants.CORE_IMAGE_PATH + "/" + code + ex);
if(file.exists()){
return file;
}
File file_ex = new File(AppsSettings.get().getResourcePath(), Constants.CORE_EXPANSIONS_IMAGE_PATH + "/" + code + ex);
if(file_ex.exists()){
return file_ex;
}
}
return null;
}
public void bindImage(ImageView imageview, long code, Drawable pre, @NonNull Type type) { public void bindImage(ImageView imageview, long code, Drawable pre, @NonNull Type type) {
if (BuildConfig.DEBUG_MODE) { if (BuildConfig.DEBUG_MODE) {
Log.v(TAG, "bind image:" + code + ", type=" + type); Log.v(TAG, "bind image:" + code + ", type=" + type);
...@@ -283,8 +294,7 @@ public class ImageLoader implements Closeable { ...@@ -283,8 +294,7 @@ public class ImageLoader implements Closeable {
} }
//3. //3.
//zips //zips
File[] files = new File(AppsSettings.get().getResourcePath(), Constants.CORE_EXPANSIONS) File[] files = AppsSettings.get().getExpansionFiles();
.listFiles((dir, name1) -> name1.endsWith(".zip") || name1.endsWith(".ypk"));
cleanInValidZips(); cleanInValidZips();
...@@ -321,28 +331,4 @@ public class ImageLoader implements Closeable { ...@@ -321,28 +331,4 @@ public class ImageLoader implements Closeable {
} }
} }
private static class BpgResourceDecoder implements ResourceDecoder<ImageVideoWrapper, GifBitmapWrapper> {
private final String id;
private final LruBitmapPool mLruBitmapPool;
private BpgResourceDecoder(String id, LruBitmapPool lruBitmapPool) {
this.id = id;
this.mLruBitmapPool = lruBitmapPool;
}
@Override
public Resource<GifBitmapWrapper> decode(ImageVideoWrapper source, int width, int height) {
Bitmap bitmap = IrrlichtBridge.getBpgImage(source.getStream(), Bitmap.Config.RGB_565);
if (bitmap == null) {
return null;
}
BitmapResource resource = new BitmapResource(bitmap, mLruBitmapPool);
return new GifBitmapWrapperResource(new GifBitmapWrapper(resource, null));
}
@Override
public String getId() {
return id;
}
}
} }
...@@ -256,7 +256,7 @@ public class BaseActivity extends AppCompatActivity { ...@@ -256,7 +256,7 @@ public class BaseActivity extends AppCompatActivity {
} }
public Context getContext() { public Context getContext() {
return getActivity(); return this;
} }
protected <T extends View> T $(int id) { protected <T extends View> T $(int id) {
......
...@@ -16,8 +16,6 @@ import androidx.appcompat.app.AppCompatActivity; ...@@ -16,8 +16,6 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat; import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import com.bumptech.glide.GenericTranscodeRequest;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
......
...@@ -22,7 +22,6 @@ import com.app.hubert.guide.NewbieGuide; ...@@ -22,7 +22,6 @@ import com.app.hubert.guide.NewbieGuide;
import com.app.hubert.guide.model.GuidePage; import com.app.hubert.guide.model.GuidePage;
import com.app.hubert.guide.model.HighLight; import com.app.hubert.guide.model.HighLight;
import com.app.hubert.guide.model.HighlightOptions; import com.app.hubert.guide.model.HighlightOptions;
import com.bumptech.glide.Glide;
import java.util.List; import java.util.List;
...@@ -32,6 +31,7 @@ import cn.garymb.ygomobile.loader.CardLoader; ...@@ -32,6 +31,7 @@ import cn.garymb.ygomobile.loader.CardLoader;
import cn.garymb.ygomobile.loader.ImageLoader; import cn.garymb.ygomobile.loader.ImageLoader;
import cn.garymb.ygomobile.ui.activities.BaseActivity; import cn.garymb.ygomobile.ui.activities.BaseActivity;
import cn.garymb.ygomobile.ui.adapters.CardListAdapter; import cn.garymb.ygomobile.ui.adapters.CardListAdapter;
import cn.garymb.ygomobile.utils.glide.GlideCompat;
import ocgcore.DataManager; import ocgcore.DataManager;
import ocgcore.LimitManager; import ocgcore.LimitManager;
import ocgcore.StringManager; import ocgcore.StringManager;
...@@ -180,10 +180,10 @@ public abstract class BaseCardsActivity extends BaseActivity implements CardLoad ...@@ -180,10 +180,10 @@ public abstract class BaseCardsActivity extends BaseActivity implements CardLoad
switch (newState) { switch (newState) {
case RecyclerView.SCROLL_STATE_IDLE: case RecyclerView.SCROLL_STATE_IDLE:
case RecyclerView.SCROLL_STATE_SETTLING: case RecyclerView.SCROLL_STATE_SETTLING:
Glide.with(getContext()).resumeRequests(); GlideCompat.with(getContext()).resumeRequests();
break; break;
case RecyclerView.SCROLL_STATE_DRAGGING: case RecyclerView.SCROLL_STATE_DRAGGING:
Glide.with(getContext()).pauseRequests(); GlideCompat.with(getContext()).pauseRequests();
break; break;
} }
} }
......
...@@ -349,7 +349,6 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder { ...@@ -349,7 +349,6 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder {
private void showCardImageDetail(int code) { private void showCardImageDetail(int code) {
AppsSettings appsSettings = AppsSettings.get(); AppsSettings appsSettings = AppsSettings.get();
File file = new File(appsSettings.getCardImagePath(code));
View view = dialog.initDialog(context, R.layout.dialog_photo); View view = dialog.initDialog(context, R.layout.dialog_photo);
dialog.setDialogWidth(ViewGroup.LayoutParams.MATCH_PARENT); dialog.setDialogWidth(ViewGroup.LayoutParams.MATCH_PARENT);
...@@ -391,7 +390,7 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder { ...@@ -391,7 +390,7 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder {
btn_redownload.setOnClickListener((s) -> { btn_redownload.setOnClickListener((s) -> {
ll_btn.startAnimation(AnimationUtils.loadAnimation(context, R.anim.push_out)); ll_btn.startAnimation(AnimationUtils.loadAnimation(context, R.anim.push_out));
ll_btn.setVisibility(View.GONE); ll_btn.setVisibility(View.GONE);
downloadCardImage(code, file, true); downloadCardImage(code, true);
}); });
btn_share.setOnClickListener((s) -> { btn_share.setOnClickListener((s) -> {
...@@ -418,17 +417,18 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder { ...@@ -418,17 +417,18 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder {
//先显示普通卡片大图,判断如果没有高清图就下载 //先显示普通卡片大图,判断如果没有高清图就下载
imageLoader.bindImage(photoView, code, null, ImageLoader.Type.middle); imageLoader.bindImage(photoView, code, null, ImageLoader.Type.middle);
if (!file.exists()) { if (null == ImageLoader.getImageFile(code)) {
downloadCardImage(code, file, false); downloadCardImage(code, false);
} }
} }
private void downloadCardImage(int code, File imgFile, boolean force) { private void downloadCardImage(int code, boolean force) {
if (cardManager.getCard(code) == null) { if (cardManager.getCard(code) == null) {
YGOUtil.show(context.getString(R.string.tip_expansions_image)); YGOUtil.show(context.getString(R.string.tip_expansions_image));
return; return;
} }
File imgFile = new File(AppsSettings.get().getCardImagePath(code));
final File tmp = new File(imgFile.getAbsolutePath() + ".tmp"); final File tmp = new File(imgFile.getAbsolutePath() + ".tmp");
if (tmp.exists()) { if (tmp.exists()) {
if(force){ if(force){
......
...@@ -26,7 +26,6 @@ import com.app.hubert.guide.NewbieGuide; ...@@ -26,7 +26,6 @@ import com.app.hubert.guide.NewbieGuide;
import com.app.hubert.guide.model.GuidePage; import com.app.hubert.guide.model.GuidePage;
import com.app.hubert.guide.model.HighLight; import com.app.hubert.guide.model.HighLight;
import com.app.hubert.guide.model.HighlightOptions; import com.app.hubert.guide.model.HighlightOptions;
import com.bumptech.glide.Glide;
import com.ourygo.assistant.util.DuelAssistantManagement; import com.ourygo.assistant.util.DuelAssistantManagement;
import java.util.List; import java.util.List;
...@@ -42,6 +41,7 @@ import cn.garymb.ygomobile.ui.adapters.CardListAdapter; ...@@ -42,6 +41,7 @@ import cn.garymb.ygomobile.ui.adapters.CardListAdapter;
import cn.garymb.ygomobile.ui.plus.AOnGestureListener; import cn.garymb.ygomobile.ui.plus.AOnGestureListener;
import cn.garymb.ygomobile.ui.plus.DialogPlus; import cn.garymb.ygomobile.ui.plus.DialogPlus;
import cn.garymb.ygomobile.ui.plus.VUiKit; import cn.garymb.ygomobile.ui.plus.VUiKit;
import cn.garymb.ygomobile.utils.glide.GlideCompat;
import ocgcore.DataManager; import ocgcore.DataManager;
import ocgcore.LimitManager; import ocgcore.LimitManager;
import ocgcore.StringManager; import ocgcore.StringManager;
...@@ -170,11 +170,11 @@ public class CardSearchActivity extends BaseActivity implements CardLoader.CallB ...@@ -170,11 +170,11 @@ public class CardSearchActivity extends BaseActivity implements CardLoader.CallB
case RecyclerView.SCROLL_STATE_IDLE: case RecyclerView.SCROLL_STATE_IDLE:
case RecyclerView.SCROLL_STATE_SETTLING: case RecyclerView.SCROLL_STATE_SETTLING:
if (!isFinishing()) { if (!isFinishing()) {
Glide.with(getContext()).resumeRequests(); GlideCompat.with(getContext()).resumeRequests();
} }
break; break;
case RecyclerView.SCROLL_STATE_DRAGGING: case RecyclerView.SCROLL_STATE_DRAGGING:
Glide.with(getContext()).pauseRequests(); GlideCompat.with(getContext()).pauseRequests();
break; break;
} }
} }
......
...@@ -12,8 +12,6 @@ import android.widget.ImageView; ...@@ -12,8 +12,6 @@ import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import com.bumptech.glide.Glide;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -25,6 +23,7 @@ import cn.garymb.ygomobile.Constants; ...@@ -25,6 +23,7 @@ import cn.garymb.ygomobile.Constants;
import cn.garymb.ygomobile.lite.R; import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ui.adapters.BaseAdapterPlus; import cn.garymb.ygomobile.ui.adapters.BaseAdapterPlus;
import cn.garymb.ygomobile.ui.plus.VUiKit; import cn.garymb.ygomobile.ui.plus.VUiKit;
import cn.garymb.ygomobile.utils.glide.GlideCompat;
class FileAdapter extends BaseAdapterPlus<File> { class FileAdapter extends BaseAdapterPlus<File> {
public interface OnPathChangedListener { public interface OnPathChangedListener {
...@@ -221,7 +220,7 @@ class FileAdapter extends BaseAdapterPlus<File> { ...@@ -221,7 +220,7 @@ class FileAdapter extends BaseAdapterPlus<File> {
} }
if (!item.isDirectory()) { if (!item.isDirectory()) {
if (isimage) { if (isimage) {
Glide.with(context).load(item).into(viewHolder.icon); GlideCompat.with(context).load(item).into(viewHolder.icon);
} else { } else {
viewHolder.icon.setImageResource(R.drawable.ic_insert_drive_file); viewHolder.icon.setImageResource(R.drawable.ic_insert_drive_file);
} }
......
...@@ -24,7 +24,6 @@ import androidx.annotation.NonNull; ...@@ -24,7 +24,6 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.drawerlayout.widget.DrawerLayout; import androidx.drawerlayout.widget.DrawerLayout;
import com.bumptech.glide.Glide;
import com.google.android.material.navigation.NavigationView; import com.google.android.material.navigation.NavigationView;
import com.tencent.smtt.sdk.ValueCallback; import com.tencent.smtt.sdk.ValueCallback;
import com.tencent.smtt.sdk.WebChromeClient; import com.tencent.smtt.sdk.WebChromeClient;
...@@ -40,6 +39,7 @@ import cn.garymb.ygomobile.ui.activities.BaseActivity; ...@@ -40,6 +39,7 @@ import cn.garymb.ygomobile.ui.activities.BaseActivity;
import cn.garymb.ygomobile.ui.cards.DeckManagerActivity; import cn.garymb.ygomobile.ui.cards.DeckManagerActivity;
import cn.garymb.ygomobile.ui.mycard.mcchat.SplashActivity; import cn.garymb.ygomobile.ui.mycard.mcchat.SplashActivity;
import cn.garymb.ygomobile.utils.ActivityUtils; import cn.garymb.ygomobile.utils.ActivityUtils;
import cn.garymb.ygomobile.utils.glide.GlideCompat;
public class MyCardActivity extends BaseActivity implements MyCard.MyCardListener, NavigationView.OnNavigationItemSelectedListener { public class MyCardActivity extends BaseActivity implements MyCard.MyCardListener, NavigationView.OnNavigationItemSelectedListener {
...@@ -56,15 +56,13 @@ public class MyCardActivity extends BaseActivity implements MyCard.MyCardListene ...@@ -56,15 +56,13 @@ public class MyCardActivity extends BaseActivity implements MyCard.MyCardListene
@Override @Override
public void handleMessage(Message msg) { public void handleMessage(Message msg) {
super.handleMessage(msg); super.handleMessage(msg);
switch (msg.what) { if (msg.what == TYPE_MC_LOGIN) {
case TYPE_MC_LOGIN:
String[] ss = (String[]) msg.obj; String[] ss = (String[]) msg.obj;
if (!TextUtils.isEmpty(ss[1]) && ActivityUtils.isActivityExist(MyCardActivity.this)) { if (!TextUtils.isEmpty(ss[1]) && ActivityUtils.isActivityExist(MyCardActivity.this)) {
Glide.with(MyCardActivity.this).load(Uri.parse(ss[1])).into(mHeadView); GlideCompat.with(MyCardActivity.this).load(Uri.parse(ss[1])).into(mHeadView);
} }
mNameView.setText(ss[0]); mNameView.setText(ss[0]);
mStatusView.setText(ss[2]); mStatusView.setText(ss[2]);
break;
} }
} }
}; };
......
package cn.garymb.ygomobile.ui.mycard.mcchat.util; package cn.garymb.ygomobile.ui.mycard.mcchat.util;
import android.content.Context; import android.content.Context;
import android.graphics.ColorFilter;
import android.graphics.ColorMatrix; import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter; import android.graphics.ColorMatrixColorFilter;
import android.net.Uri; import android.net.Uri;
import android.util.Log;
import android.widget.ImageView; import android.widget.ImageView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.engine.DiskCacheStrategy;
import java.util.HashMap;
import java.util.Map;
import cn.garymb.ygomobile.lite.R; import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.utils.glide.GlideCompat;
public class ImageUtil { public class ImageUtil {
public static void setAvatar(Context context, String url, final ImageView im) { public static void setAvatar(Context context, String url, final ImageView im) {
if (url != null) { if (url != null) {
Glide.with(context) GlideCompat.with(context)
.load(Uri.parse(url)) .load(Uri.parse(url))
.asBitmap() .diskCacheStrategy(DiskCacheStrategy.DATA)
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.placeholder(R.drawable.avatar) .placeholder(R.drawable.avatar)
.into(im); .into(im);
} }
...@@ -32,10 +26,9 @@ public class ImageUtil { ...@@ -32,10 +26,9 @@ public class ImageUtil {
public static void setImage(Context context, String url, final ImageView im) { public static void setImage(Context context, String url, final ImageView im) {
if (url != null) { if (url != null) {
Glide.with(context) GlideCompat.with(context)
.load(url) .load(url)
.asBitmap() .diskCacheStrategy(DiskCacheStrategy.DATA)
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.placeholder(R.drawable.unknown) .placeholder(R.drawable.unknown)
.into(im); .into(im);
} }
......
package cn.garymb.ygomobile.ui.plus; package cn.garymb.ygomobile.ui.plus;
import android.os.Build; import android.graphics.drawable.Drawable;
import android.view.View; import android.view.View;
import com.bumptech.glide.load.resource.drawable.GlideDrawable; import androidx.annotation.NonNull;
import com.bumptech.glide.request.animation.GlideAnimation; import androidx.annotation.Nullable;
import com.bumptech.glide.request.target.ViewTarget;
import com.bumptech.glide.request.target.CustomViewTarget;
import com.bumptech.glide.request.transition.Transition;
public class ViewTargetPlus extends ViewTarget<View, GlideDrawable> {
public class ViewTargetPlus extends CustomViewTarget<View, Drawable> {
public ViewTargetPlus(View view) { public ViewTargetPlus(View view) {
super(view); super(view);
} }
@Override @Override
public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> glideAnimation) { protected void onResourceCleared(@Nullable Drawable placeholder) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { this.view.setBackground(placeholder);
}
@Override
public void onLoadFailed(@Nullable Drawable errorDrawable) {
this.view.setBackground(errorDrawable);
}
@Override
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
this.view.setBackground(resource); this.view.setBackground(resource);
} else { if (transition != null) {
this.view.setBackgroundDrawable(resource); transition.transition(resource, new Transition.ViewAdapter() {
@Override
public View getView() {
return view;
}
@Nullable
@Override
public Drawable getCurrentDrawable() {
return view.getBackground();
}
@Override
public void setDrawable(Drawable drawable) {
view.setBackground(drawable);
}
});
} }
} }
} }
...@@ -16,6 +16,11 @@ import android.view.MenuItem; ...@@ -16,6 +16,11 @@ import android.view.MenuItem;
abstract class BasePreferenceFragment extends PreferenceFragment implements Preference.OnPreferenceClickListener abstract class BasePreferenceFragment extends PreferenceFragment implements Preference.OnPreferenceClickListener
, Preference.OnPreferenceChangeListener { , Preference.OnPreferenceChangeListener {
public BasePreferenceFragment() {
super();
}
@Override @Override
public boolean onPreferenceChange(Preference preference, Object value) { public boolean onPreferenceChange(Preference preference, Object value) {
if (value == null) return false; if (value == null) return false;
......
...@@ -22,9 +22,8 @@ import android.widget.ImageView; ...@@ -22,9 +22,8 @@ import android.widget.ImageView;
import android.widget.ListView; import android.widget.ListView;
import android.widget.Toast; import android.widget.Toast;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.signature.StringSignature; import com.bumptech.glide.signature.MediaStoreSignature;
import com.ourygo.assistant.service.DuelAssistantService; import com.ourygo.assistant.service.DuelAssistantService;
import com.tencent.bugly.beta.Beta; import com.tencent.bugly.beta.Beta;
...@@ -46,6 +45,7 @@ import cn.garymb.ygomobile.ui.plus.DialogPlus; ...@@ -46,6 +45,7 @@ import cn.garymb.ygomobile.ui.plus.DialogPlus;
import cn.garymb.ygomobile.ui.plus.VUiKit; import cn.garymb.ygomobile.ui.plus.VUiKit;
import cn.garymb.ygomobile.ui.preference.PreferenceFragmentPlus; import cn.garymb.ygomobile.ui.preference.PreferenceFragmentPlus;
import cn.garymb.ygomobile.utils.FileUtils; import cn.garymb.ygomobile.utils.FileUtils;
import cn.garymb.ygomobile.utils.glide.GlideCompat;
import cn.garymb.ygomobile.utils.IOUtils; import cn.garymb.ygomobile.utils.IOUtils;
import cn.garymb.ygomobile.utils.SystemUtils; import cn.garymb.ygomobile.utils.SystemUtils;
import ocgcore.DataManager; import ocgcore.DataManager;
...@@ -489,7 +489,7 @@ public class SettingFragment extends PreferenceFragmentPlus { ...@@ -489,7 +489,7 @@ public class SettingFragment extends PreferenceFragmentPlus {
//builder.show(); //builder.show();
File img = new File(outFile); File img = new File(outFile);
if (img.exists()) { if (img.exists()) {
Glide.with(this).load(img).signature(new StringSignature(img.getName() + img.lastModified())) GlideCompat.with(this).load(img).signature(new MediaStoreSignature("image/*", img.lastModified(), 0))
.diskCacheStrategy(DiskCacheStrategy.NONE) .diskCacheStrategy(DiskCacheStrategy.NONE)
.override(outWidth, outHeight) .override(outWidth, outHeight)
.into(imageView); .into(imageView);
...@@ -499,7 +499,7 @@ public class SettingFragment extends PreferenceFragmentPlus { ...@@ -499,7 +499,7 @@ public class SettingFragment extends PreferenceFragmentPlus {
public void setImage(String outFile, int outWidth, int outHeight, ImageView imageView) { public void setImage(String outFile, int outWidth, int outHeight, ImageView imageView) {
File img = new File(outFile); File img = new File(outFile);
if (img.exists()) { if (img.exists()) {
Glide.with(this).load(img).signature(new StringSignature(img.getName() + img.lastModified())) GlideCompat.with(this).load(img).signature(new MediaStoreSignature("image/*", img.lastModified(), 0))
.diskCacheStrategy(DiskCacheStrategy.NONE) .diskCacheStrategy(DiskCacheStrategy.NONE)
.override(outWidth, outHeight) .override(outWidth, outHeight)
.into(imageView); .into(imageView);
......
package cn.garymb.ygomobile.utils; package cn.garymb.ygomobile.utils;
import android.content.Context; import android.content.Context;
import android.os.Build;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
...@@ -94,23 +93,25 @@ public class DeckUtil { ...@@ -94,23 +93,25 @@ public class DeckUtil {
} }
} }
} }
files = appsSettings.getExpansionsPath().listFiles(); files = appsSettings.getExpansionFiles();
for (File file : files) { for (File file : files) {
if (file.isFile() && (file.getName().endsWith(".zip") || file.getName().endsWith(".ypk"))) { if (file.isFile()) {
ZipFile zipFile = new ZipFile(file.getAbsoluteFile()); ZipFile zipFile = null;
Enumeration entries = zipFile.entries(); try {
zipFile = new ZipFile(file.getAbsoluteFile());
Enumeration<?> entries = zipFile.entries();
while (entries.hasMoreElements()) { while (entries.hasMoreElements()) {
ZipEntry entry = (ZipEntry) entries.nextElement(); ZipEntry entry = (ZipEntry) entries.nextElement();
if (entry.getName().endsWith(".ydk")) { if (entry.getName().endsWith(".ydk")) {
String name = entry.getName(); String name = entry.getName();
name = name.substring(name.lastIndexOf("/"), name.length()); name = name.substring(name.lastIndexOf("/"));
InputStream inputStream = zipFile.getInputStream(entry); InputStream inputStream = zipFile.getInputStream(entry);
deckList.add(new DeckFile( deckList.add(new DeckFile(
IOUtils.asFile(inputStream, IOUtils.asFile(inputStream,
appsSettings.getCacheDeckDir() + "/" + name))); appsSettings.getCacheDeckDir() + "/" + name)));
} }
} }
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { } finally {
IOUtils.close(zipFile); IOUtils.close(zipFile);
} }
} }
...@@ -119,14 +120,14 @@ public class DeckUtil { ...@@ -119,14 +120,14 @@ public class DeckUtil {
return deckList; return deckList;
} }
static Comparator nameCom = new Comparator<DeckFile>() { private final static Comparator<DeckFile> nameCom = new Comparator<DeckFile>() {
@Override @Override
public int compare(DeckFile ydk1, DeckFile ydk2) { public int compare(DeckFile ydk1, DeckFile ydk2) {
return ydk1.getName().compareTo(ydk2.getName()); return ydk1.getName().compareTo(ydk2.getName());
} }
}; };
static Comparator dateCom = new Comparator<DeckFile>() { private final static Comparator<DeckFile> dateCom = new Comparator<DeckFile>() {
@Override @Override
public int compare(DeckFile ydk1, DeckFile ydk2) { public int compare(DeckFile ydk1, DeckFile ydk2) {
return ydk2.getDate().compareTo(ydk1.getDate()); return ydk2.getDate().compareTo(ydk1.getDate());
......
package cn.garymb.ygomobile.utils.glide;
import android.graphics.Bitmap;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.bumptech.glide.load.Options;
import com.bumptech.glide.load.ResourceDecoder;
import com.bumptech.glide.load.engine.Resource;
import com.bumptech.glide.load.engine.bitmap_recycle.LruBitmapPool;
import com.bumptech.glide.load.resource.bitmap.BitmapResource;
import java.io.File;
import java.io.FileInputStream;
import cn.garymb.ygomobile.core.IrrlichtBridge;
import cn.garymb.ygomobile.utils.IOUtils;
public class BpgResourceDecoder implements ResourceDecoder<File, Bitmap> {
private final LruBitmapPool mLruBitmapPool;
public BpgResourceDecoder(LruBitmapPool lruBitmapPool) {
this.mLruBitmapPool = lruBitmapPool;
}
@Override
public boolean handles(@NonNull File source, @NonNull Options options) {
return source.getName().toLowerCase().endsWith(".bpg");
}
@Nullable
@Override
public Resource<Bitmap> decode(@NonNull File source, int width, int height, @NonNull Options options) {
// Log.v("ImageLoader", "decode:" + source);
FileInputStream input = null;
Bitmap bitmap = null;
try {
input = new FileInputStream(source);
bitmap = IrrlichtBridge.getBpgImage(input, Bitmap.Config.RGB_565);
} catch (Throwable e) {
//Ignore
} finally {
IOUtils.close(input);
}
if (bitmap == null) {
return null;
}
return new BitmapResource(bitmap, mLruBitmapPool);
}
}
\ No newline at end of file
package cn.garymb.ygomobile.utils.glide;
import android.app.Activity;
import android.content.Context;
import android.view.View;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import com.bumptech.glide.Glide;
import com.bumptech.glide.RequestManager;
public class GlideCompat {
public static RequestManager with(Context context) {
return Glide.with(context);
}
@Deprecated
public static RequestManager with(android.app.Fragment context) {
return Glide.with(context);
}
public static RequestManager with(Fragment context) {
return Glide.with(context);
}
public static RequestManager with(View context) {
return Glide.with(context);
}
public static RequestManager with(FragmentActivity context) {
return Glide.with(context);
}
public static RequestManager with(Activity activity) {
return Glide.with(activity);
}
}
package cn.garymb.ygomobile.utils.glide;
import androidx.annotation.NonNull;
import com.bumptech.glide.load.Key;
import com.bumptech.glide.util.Preconditions;
import java.security.MessageDigest;
import java.util.Objects;
public class StringSignature implements Key {
private final String key;
public StringSignature(String key) {
this.key = Preconditions.checkNotNull(key);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
StringSignature that = (StringSignature) o;
return Objects.equals(key, that.key);
}
@Override
public int hashCode() {
return Objects.hash(key);
}
@Override
public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
messageDigest.update(key.getBytes(CHARSET));
}
@NonNull
@Override
public String toString() {
return "StringSignature{" +
"key='" + key + '\'' +
'}';
}
}
package cn.garymb.ygomobile.utils.glide;
import android.content.Context;
import android.graphics.Bitmap;
import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import com.bumptech.glide.Glide;
import com.bumptech.glide.GlideBuilder;
import com.bumptech.glide.Registry;
import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.load.DecodeFormat;
import com.bumptech.glide.load.engine.bitmap_recycle.LruBitmapPool;
import com.bumptech.glide.load.engine.cache.ExternalPreferredCacheDiskCacheFactory;
import com.bumptech.glide.module.AppGlideModule;
import com.bumptech.glide.request.RequestOptions;
import java.io.File;
@Keep
@GlideModule
public class YGOAppGlideModule extends AppGlideModule {
private final LruBitmapPool mLruBitmapPool = new LruBitmapPool(128);
@Override
public void applyOptions(@NonNull Context context, @NonNull GlideBuilder builder) {
super.applyOptions(context, builder);
//不需要显示透明
builder.setDefaultRequestOptions(new RequestOptions().format(DecodeFormat.PREFER_RGB_565));
builder.setDiskCache(new ExternalPreferredCacheDiskCacheFactory(context));
}
@Override
public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) {
super.registerComponents(context, glide, registry);
registry.append(File.class, Bitmap.class, new BpgResourceDecoder(mLruBitmapPool));
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment