diff options
author | Andrew Dolgov <[email protected]> | 2018-07-11 09:44:53 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2018-07-11 09:44:53 +0300 |
commit | e64310fc7fcc0ac2ae73bd44120bc5cf7300dc08 (patch) | |
tree | 16cc68a1d79bacf970d9dc717ed29fbc98bb9922 /org.fox.ttcomics | |
parent | b9a0273fb5d9f4f6d5fdc5e22fc3938187232cde (diff) |
initial for glide
Diffstat (limited to 'org.fox.ttcomics')
10 files changed, 94 insertions, 147 deletions
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 Binary files differdeleted file mode 100755 index e8ca33b..0000000 --- a/org.fox.ttcomics/libs/universal-image-loader-1.9.3.jar +++ /dev/null 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 @@ <orderEntry type="library" name="com.android.support:recyclerview-v7-27.1.0" level="project" /> <orderEntry type="library" name="org.clojure:clojure:1.7.0@jar" level="project" /> <orderEntry type="library" name="com.google.auto.service:auto-service:1.0-rc2@jar" level="project" /> - <orderEntry type="library" name="__local_aars__:C.\cygwin64\home\fox\Projects\tt-comics\org.fox.ttcomics\libs\universal-image-loader-1.9.3.jar:unspecified@jar" level="project" /> <orderEntry type="library" name="com.google.android.gms:play-services-auth-base-15.0.1" level="project" /> + <orderEntry type="library" name="com.github.bumptech.glide:glide:3.8.0@jar" level="project" /> <orderEntry type="library" name="com.google.android.gms:play-services-auth-api-phone-15.0.1" level="project" /> <orderEntry type="library" name="stencil:stencil:0.3.5@jar" level="project" /> <orderEntry type="library" name="com.google.guava:guava:18.0@jar" level="project" /> 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">
+
+ <meta-data
+ android:name="org.fox.ttcomics2.utils.StreamGlideModule"
+ android:value="GlideModule" />
+
<activity
android:theme="@android:style/Theme.NoDisplay"
android:name=".LaunchActivity"
diff --git a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicFragment.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicFragment.java index 4121dfd..266597d 100755 --- a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicFragment.java +++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicFragment.java @@ -6,14 +6,15 @@ import android.content.SharedPreferences; import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v7.app.ActionBar;
+import android.util.Log;
import android.view.GestureDetector;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
-import com.nostra13.universalimageloader.core.DisplayImageOptions;
-import com.nostra13.universalimageloader.core.ImageLoader;
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.engine.DiskCacheStrategy;
import org.fox.ttcomics2.archive.ComicArchive;
@@ -41,10 +42,6 @@ public class ComicFragment extends StateSavedFragment implements GestureDetector m_page = page;
}
- public void setPage(int page) {
- m_page = page;
- }
-
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
@@ -53,28 +50,19 @@ public class ComicFragment extends StateSavedFragment implements GestureDetector final ImageViewTouch image = view.findViewById(R.id.comic_image);
image.setFitToScreen(true);
- ImageLoader imageLoader = ImageLoader.getInstance();
-
- if (m_prefs.getBoolean("fit_to_width", false)) {
- image.setFitToWidth(true);
- }
-
- try {
- byte[] buf = m_archive.getByteArray(m_page);
-
- DisplayImageOptions options = new DisplayImageOptions.Builder()
- .showImageOnFail(R.drawable.badimage)
- .extraForDownloader(buf)
- .cacheOnDisk(false)
- .cacheInMemory(false)
- .build();
-
- imageLoader.displayImage("stream://" + m_page, image, options);
-
- } catch (IOException e) {
- image.setImageResource(R.drawable.badimage);
- e.printStackTrace();
- }
+ Log.d(TAG, "loading page:" + m_page + " " + m_archive);
+
+ try {
+ Glide.with(ComicFragment.this)
+ .load(m_archive.getItem(m_page))
+ .dontAnimate()
+ .diskCacheStrategy(DiskCacheStrategy.NONE)
+ .skipMemoryCache(true)
+ .into(image);
+ } catch (IOException e) {
+ image.setImageResource(R.drawable.badimage);
+ e.printStackTrace();
+ }
image.setOnScaleChangedListener(new ImageViewTouch.OnScaleChangedListener() {
@Override
@@ -92,12 +80,6 @@ public class ComicFragment extends StateSavedFragment implements GestureDetector //}
- /* TextView page = (TextView) view.findViewById(R.id.comic_page);
-
- if (page != null) {
- page.setText(String.valueOf(m_page+1));
- } */
-
return view;
}
@@ -113,8 +95,8 @@ public class ComicFragment extends StateSavedFragment implements GestureDetector }
}
}
-
- public boolean canScroll(int direction) {
+
+ /*public boolean canScroll(int direction) {
ImageViewTouch image = getView().findViewById(R.id.comic_image);
if (image != null) {
@@ -122,7 +104,7 @@ public class ComicFragment extends StateSavedFragment implements GestureDetector } else {
return false;
}
- }
+ }*/
private void onRightSideTapped() {
ImageViewTouch image = getView().findViewById(R.id.comic_image);
diff --git a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicListFragment.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicListFragment.java index 8c7f8ac..31fd6a8 100755 --- a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicListFragment.java +++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/ComicListFragment.java @@ -27,11 +27,10 @@ import android.widget.PopupMenu; import android.widget.ProgressBar;
import android.widget.TextView;
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.nhaarman.listviewanimations.appearance.AnimationAdapter;
import com.nhaarman.listviewanimations.appearance.simple.ScaleInAnimationAdapter;
-import com.nostra13.universalimageloader.core.DisplayImageOptions;
-import com.nostra13.universalimageloader.core.ImageLoader;
-import com.nostra13.universalimageloader.core.process.BitmapProcessor;
import java.io.File;
@@ -56,7 +55,6 @@ public class ComicListFragment extends StateSavedFragment implements OnItemClick @State protected String m_baseDirectory = "";
private SwipeRefreshLayout m_swipeLayout;
private AnimationAdapter m_animationAdapter;
- private ImageLoader m_imageLoader = ImageLoader.getInstance();
public ComicListFragment() {
super();
@@ -102,35 +100,6 @@ public class ComicListFragment extends StateSavedFragment implements OnItemClick private class ComicsListAdapter extends SimpleCursorAdapter {
- DisplayImageOptions m_imageOptions = new DisplayImageOptions.Builder()
- .cacheInMemory(true)
- .resetViewBeforeLoading(true)
- .postProcessor(new BitmapProcessor() {
- @Override
- public Bitmap process(Bitmap bmp) {
- int maxDimension = 400;
-
- if (Math.max(bmp.getHeight(), bmp.getWidth()) > 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<InputStream> { + @Override public DataFetcher<InputStream> getResourceFetcher(final InputStream model, int width, int height) { + return new DataFetcher<InputStream>() { + @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<InputStream, InputStream> { + @Override public ModelLoader<InputStream, InputStream> build(Context context, GenericLoaderFactory factories) { + return new PassthroughStreamLoader(); + } + @Override public void teardown() { + // nothing to do + } + } +}
\ No newline at end of file |