|
|
@@ -3,6 +3,7 @@ package com.mgtech.base_library.util;
|
|
|
import android.content.Context;
|
|
|
import android.graphics.drawable.Drawable;
|
|
|
import android.text.Html;
|
|
|
+import android.util.Log;
|
|
|
|
|
|
import androidx.annotation.NonNull;
|
|
|
import androidx.annotation.Nullable;
|
|
|
@@ -14,6 +15,15 @@ import com.bumptech.glide.request.transition.Transition;
|
|
|
import java.io.IOException;
|
|
|
import java.io.InputStream;
|
|
|
import java.net.URL;
|
|
|
+import java.util.concurrent.Callable;
|
|
|
+import java.util.concurrent.ExecutionException;
|
|
|
+import java.util.concurrent.FutureTask;
|
|
|
+
|
|
|
+import io.reactivex.Observable;
|
|
|
+import io.reactivex.Scheduler;
|
|
|
+import io.reactivex.android.schedulers.AndroidSchedulers;
|
|
|
+import io.reactivex.functions.Action;
|
|
|
+import io.reactivex.schedulers.Schedulers;
|
|
|
|
|
|
/**
|
|
|
* @ProjectName: BaseLibrary
|
|
|
@@ -37,16 +47,43 @@ public class HtmlImageGetterUtil implements Html.ImageGetter{
|
|
|
|
|
|
@Override
|
|
|
public Drawable getDrawable(String source) {
|
|
|
-
|
|
|
- InputStream inputStream = null;
|
|
|
+ getHtmlDrawable(source);
|
|
|
try {
|
|
|
- inputStream = (InputStream) new URL(source).getContent();
|
|
|
- drawable = Drawable.createFromStream(inputStream, "src");
|
|
|
- drawable.setBounds(0,0,50,50);
|
|
|
- inputStream.close();
|
|
|
- return drawable;
|
|
|
- } catch (Exception e) {
|
|
|
+ return drawableFutureTask.get();
|
|
|
+ } catch (ExecutionException | InterruptedException e) {
|
|
|
+ e.printStackTrace();
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ FutureTask<Drawable> drawableFutureTask;
|
|
|
+ private void getHtmlDrawable(String source){
|
|
|
+
|
|
|
+ drawableFutureTask = new FutureTask<Drawable>(new Callable<Drawable>() {
|
|
|
+ @Override
|
|
|
+ public Drawable call() throws Exception {
|
|
|
+ Thread.sleep(2000);
|
|
|
+ InputStream inputStream = null;
|
|
|
+ try {
|
|
|
+ inputStream = (InputStream) new URL(source).getContent();
|
|
|
+ drawable = Drawable.createFromStream(inputStream, "src");
|
|
|
+ drawable.setBounds(0,0,50,50);
|
|
|
+ inputStream.close();
|
|
|
+ return drawable;
|
|
|
+ } catch (Exception e) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ Scheduler.Worker worker = Schedulers.io().createWorker();
|
|
|
+ worker.schedule(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ drawableFutureTask.run();
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ Observable<Drawable> observable = Observable.fromFuture(drawableFutureTask);
|
|
|
+ }
|
|
|
}
|