From e64310fc7fcc0ac2ae73bd44120bc5cf7300dc08 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 11 Jul 2018 09:44:53 +0300 Subject: initial for glide --- org.fox.ttcomics/build.gradle | 2 +- .../libs/universal-image-loader-1.9.3.jar | Bin 160443 -> 0 bytes org.fox.ttcomics/org.fox.ttcomics.iml | 2 +- org.fox.ttcomics/src/main/AndroidManifest.xml | 7 ++- .../main/java/org/fox/ttcomics2/ComicFragment.java | 56 +++++++------------ .../java/org/fox/ttcomics2/ComicListFragment.java | 62 +++------------------ .../java/org/fox/ttcomics2/CommonActivity.java | 20 ------- .../java/org/fox/ttcomics2/ViewComicActivity.java | 4 -- .../ttcomics2/utils/ByteArrayImageDownloader.java | 29 ---------- .../org/fox/ttcomics2/utils/StreamGlideModule.java | 59 ++++++++++++++++++++ 10 files changed, 94 insertions(+), 147 deletions(-) delete mode 100755 org.fox.ttcomics/libs/universal-image-loader-1.9.3.jar delete mode 100644 org.fox.ttcomics/src/main/java/org/fox/ttcomics2/utils/ByteArrayImageDownloader.java create mode 100755 org.fox.ttcomics/src/main/java/org/fox/ttcomics2/utils/StreamGlideModule.java (limited to 'org.fox.ttcomics') diff --git a/org.fox.ttcomics/build.gradle b/org.fox.ttcomics/build.gradle index f080d5f..3ebac38 100755 --- a/org.fox.ttcomics/build.gradle +++ b/org.fox.ttcomics/build.gradle @@ -53,7 +53,7 @@ dependencies { compile 'com.android.support:design:27.1.0' compile 'com.shamanland:fab:0.0.8' compile 'jp.co.recruit_mp:android-HeaderFooterGridView:0.2.4' - compile files('libs/universal-image-loader-1.9.3.jar') + compile 'com.github.bumptech.glide:glide:3.8.0' compile 'ch.acra:acra:4.9.1' compile 'com.ToxicBakery.viewpager.transforms:view-pager-transforms:1.2.32@aar' compile 'com.nhaarman.listviewanimations:lib-core:3.1.0@aar' diff --git a/org.fox.ttcomics/libs/universal-image-loader-1.9.3.jar b/org.fox.ttcomics/libs/universal-image-loader-1.9.3.jar deleted file mode 100755 index e8ca33b..0000000 Binary files a/org.fox.ttcomics/libs/universal-image-loader-1.9.3.jar and /dev/null differ diff --git a/org.fox.ttcomics/org.fox.ttcomics.iml b/org.fox.ttcomics/org.fox.ttcomics.iml index e5494e2..37296f1 100755 --- a/org.fox.ttcomics/org.fox.ttcomics.iml +++ b/org.fox.ttcomics/org.fox.ttcomics.iml @@ -132,8 +132,8 @@ - + diff --git a/org.fox.ttcomics/src/main/AndroidManifest.xml b/org.fox.ttcomics/src/main/AndroidManifest.xml index 8c16a71..91e6eb0 100755 --- a/org.fox.ttcomics/src/main/AndroidManifest.xml +++ b/org.fox.ttcomics/src/main/AndroidManifest.xml @@ -13,7 +13,12 @@ android:hardwareAccelerated="true" android:largeHeap="true" android:fullBackupOnly="true" - android:allowBackup="true"> + android:allowBackup="true"> + + + maxDimension) { - int newHeight; - int newWidth; - - if (bmp.getHeight() > bmp.getWidth()) { - newHeight = maxDimension; - newWidth = (int)(bmp.getWidth() * (float)maxDimension / (float)bmp.getHeight()); - } else { - newWidth = maxDimension; - newHeight = (int)(bmp.getHeight() * (float)maxDimension / (float)bmp.getWidth()); - } - - return Bitmap.createScaledBitmap(bmp, newWidth, newHeight, true); - } else { - return bmp; - } - } - }) - .cacheOnDisk(false) - .build(); - public ComicsListAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags) { super(context, layout, c, from, to, flags); @@ -243,13 +212,14 @@ public class ComicListFragment extends StateSavedFragment implements OnItemClick if (cacheFilename != null) { File thumbnailFile = new File(cacheFilename); - if (holder.thumbnail != null && thumbnailFile != null && thumbnailFile.exists()) { + if (holder.thumbnail != null && thumbnailFile.exists()) { - if (!thumbnailFile.getAbsolutePath().equals(holder.thumbnail.getTag())) { + Glide.with(ComicListFragment.this) + .load(thumbnailFile) + .diskCacheStrategy(DiskCacheStrategy.NONE) + .skipMemoryCache(false) + .into(holder.thumbnail); - m_imageLoader.displayImage("file://" + thumbnailFile.getAbsolutePath(), holder.thumbnail, m_imageOptions); - holder.thumbnail.setTag(thumbnailFile.getAbsolutePath()); - } } else { holder.thumbnail.setImageDrawable(null); } @@ -288,22 +258,6 @@ public class ComicListFragment extends StateSavedFragment implements OnItemClick m_animationAdapter.setAbsListView(grid); grid.setAdapter(m_animationAdapter); - //grid.setOnTouchListener(new ShowHideOnScroll(fab)); - grid.setOnScrollListener(new AbsListView.OnScrollListener() { - @Override - public void onScrollStateChanged(AbsListView view, int scrollState) { - if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_FLING || scrollState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) { - m_imageLoader.pause(); - } else { - m_imageLoader.resume(); - } - } - - @Override - public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { - - } - }); //grid.setEmptyView(view.findViewById(R.id.no_comics)); grid.setOnItemClickListener(this); diff --git a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/CommonActivity.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/CommonActivity.java index 5599c64..d52f8d5 100755 --- a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/CommonActivity.java +++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/CommonActivity.java @@ -14,12 +14,8 @@ import android.view.MenuItem; import android.view.View; import com.livefront.bridge.Bridge; -import com.nostra13.universalimageloader.core.DisplayImageOptions; -import com.nostra13.universalimageloader.core.ImageLoader; -import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import org.fox.ttcomics2.sync.SyncClient; -import org.fox.ttcomics2.utils.ByteArrayImageDownloader; import org.fox.ttcomics2.utils.CacheCleanupService; import java.io.File; @@ -54,22 +50,6 @@ public class CommonActivity extends AppCompatActivity { m_databaseHelper = DatabaseHelper.getInstance(this); - if (!ImageLoader.getInstance().isInited()) { - - DisplayImageOptions options = new DisplayImageOptions.Builder() - .cacheInMemory(true) - .resetViewBeforeLoading(true) - .cacheOnDisk(false) - .build(); - - ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this) - .defaultDisplayImageOptions(options) - .imageDownloader(new ByteArrayImageDownloader(this)) - .build(); - - ImageLoader.getInstance().init(config); - } - m_prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); } diff --git a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ViewComicActivity.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ViewComicActivity.java index 660f32b..058e091 100755 --- a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ViewComicActivity.java +++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ViewComicActivity.java @@ -24,8 +24,6 @@ import android.view.View; import android.view.WindowManager; import android.widget.NumberPicker; -import com.nostra13.universalimageloader.core.ImageLoader; - import org.fox.ttcomics2.sync.SyncClient; import java.io.File; @@ -51,8 +49,6 @@ public class ViewComicActivity extends CommonActivity { super.onCreate(savedInstanceState); - ImageLoader.getInstance().clearMemoryCache(); - if (m_prefs.getBoolean("prevent_screen_sleep", false)) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } diff --git a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/utils/ByteArrayImageDownloader.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/utils/ByteArrayImageDownloader.java deleted file mode 100644 index 89f5260..0000000 --- a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/utils/ByteArrayImageDownloader.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.fox.ttcomics2.utils; - -import android.content.Context; - -import com.nostra13.universalimageloader.core.download.BaseImageDownloader; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; - -public class ByteArrayImageDownloader extends BaseImageDownloader { - private static final String SCHEME_STREAM = "stream"; - private static final String STREAM_URI_PREFIX = SCHEME_STREAM + "://"; - - public ByteArrayImageDownloader(Context context) { - super(context); - } - - @Override - protected InputStream getStreamFromOtherSource(String imageUri, Object extra) throws IOException { - if (imageUri.startsWith(STREAM_URI_PREFIX)) { - InputStream is = new ByteArrayInputStream((byte[])extra); - - return is; - } else { - return super.getStreamFromOtherSource(imageUri, extra); - } - } -} diff --git a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/utils/StreamGlideModule.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/utils/StreamGlideModule.java new file mode 100755 index 0000000..3659bfa --- /dev/null +++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/utils/StreamGlideModule.java @@ -0,0 +1,59 @@ +package org.fox.ttcomics2.utils; + +import android.content.Context; +import android.util.Log; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.GlideBuilder; +import com.bumptech.glide.Priority; +import com.bumptech.glide.load.data.DataFetcher; +import com.bumptech.glide.load.model.GenericLoaderFactory; +import com.bumptech.glide.load.model.ModelLoader; +import com.bumptech.glide.load.model.ModelLoaderFactory; +import com.bumptech.glide.load.model.stream.StreamModelLoader; +import com.bumptech.glide.module.GlideModule; + +import java.io.IOException; +import java.io.InputStream; + +class StreamGlideModule implements GlideModule { + @Override public void applyOptions(Context context, GlideBuilder builder) { + + } + @Override public void registerComponents(Context context, Glide glide) { + glide.register(InputStream.class, InputStream.class, new PassthroughStreamLoader.Factory()); + } +} + +class PassthroughStreamLoader implements StreamModelLoader { + @Override public DataFetcher getResourceFetcher(final InputStream model, int width, int height) { + return new DataFetcher() { + @Override public InputStream loadData(Priority priority) throws Exception { + return model; + } + @Override public void cleanup() { + try { + model.close(); + } catch (IOException e) { + Log.w("PassthroughDataFetcher", "Cannot clean up after stream", e); + } + } + @Override public String getId() { + return String.valueOf(System.currentTimeMillis()); // There's no way to have a meaningful value here, + // which means that caching of straight-loaded InputStreams is not possible. + } + @Override public void cancel() { + // do nothing + } + }; + } + + public static class Factory implements ModelLoaderFactory { + @Override public ModelLoader build(Context context, GenericLoaderFactory factories) { + return new PassthroughStreamLoader(); + } + @Override public void teardown() { + // nothing to do + } + } +} \ No newline at end of file -- cgit v1.2.3