package com.fastaccess.provider.timeline.handler;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.support.annotation.Nullable;
import android.support.v4.content.ContextCompat;
import android.text.Html;
import android.view.View;
import android.widget.TextView;
import com.fastaccess.R;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
import java.lang.ref.WeakReference;
/**
* Created by Kosh on 22 Apr 2017, 7:44 PM
*/
public class DrawableGetter implements Html.ImageGetter {
private WeakReference<TextView> container;
@Nullable TextView get() {
return container != null ? container.get() : null;
}
public DrawableGetter(TextView t) {
this.container = new WeakReference<>(t);
}
@Override public Drawable getDrawable(String source) {
TextView textView = get();
if (textView == null) return null;
UrlImageDownloader urlDrawable = new UrlImageDownloader(textView.getResources(), source);
urlDrawable.drawable = ContextCompat.getDrawable(textView.getContext(), R.drawable.ic_github_dark);
ImageLoader.getInstance().loadImage(source, new SimpleListener(urlDrawable));
return urlDrawable;
}
private class SimpleListener extends SimpleImageLoadingListener {
UrlImageDownloader urlImageDownloader;
SimpleListener(UrlImageDownloader downloader) {
super();
urlImageDownloader = downloader;
}
@Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
int width = loadedImage.getWidth();
int height = loadedImage.getHeight();
int newWidth = (int) (width / 1.5);
int newHeight = (int) (height / 1.5);
TextView textView = get();
if (textView == null) return;
Drawable result = new BitmapDrawable(textView.getResources(), loadedImage);
result.setBounds(0, 0, newWidth, newHeight);
urlImageDownloader.setBounds(0, 0, newWidth, newHeight);
urlImageDownloader.drawable = result;
textView.invalidate();
textView.setText(textView.getText());
}
}
private class UrlImageDownloader extends BitmapDrawable {
public Drawable drawable;
UrlImageDownloader(Resources res, String filepath) {
super(res, filepath);
drawable = new BitmapDrawable(res, filepath);
}
@Override public void draw(Canvas canvas) {
if (drawable != null) {
drawable.draw(canvas);
}
}
}
}