Glide.with(fragment).load((chat.getMedia().getFilename()))
.bitmapTransform(new CenterCrop(mActivity), new MaskTransformation(mActivity, resId))
.override(size.getWidth(), size.getHeight())
.placeholder(R.drawable.ic_article_image_defalut).into(holder.mImage);
MaskTransformation() 必须要override() 否则会出现意想不到的结果
Glide同步下载文件(优先从缓存加载)
File file = Glide.with(activity).load(url).downloadOnly(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL).get();
Glide同步下载bitmap(每次都会解码为bitmap效率低)
Bitmap theBitmap = Glide.with(SomeActivity.this).load(url).asBitmap().into(-1,-1).get();
Glide与RxJava结合下载文件
public void downLoadFile(final Activity activity, final String url){
Subscription subscribe = Observable
.create(new Observable.OnSubscribe<File>() {
@Override
public void call(Subscriber<? super File> subscriber) {
try {
// 如果是下载原图那么可以使用
// Bitmap bitmap = Glide.with(context).load(url).downloadOnly(Target.SIZE_ORIGINAL,Target.SIZE_ORIGINAL).get()
// 如果是下载原图文件那么可以使用
// 这个是关键代码
File file = Glide.with(activity).load(url).downloadOnly(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL).get();
subscriber.onNext(file);
subscriber.onCompleted();
} catch (InterruptedException | ExecutionException e) {
subscriber.onError(e);
}
}
})
.subscribeOn(Schedulers.io())
.map(new Func1<File, File>() {
@Override
public File call(File file) {
File dest = AndroidUtils.getTmpFile(getDstDir("image/"), null);
try {
FileUtils.copyFile(file, dest);
return dest;
} catch (IOException e) {
throw OnErrorThrowable.from(e);
}
}
})
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<File>() {
@Override
public void onNext(File file) {
Toost.message("该图片已被保持至" + file.getPath());
}
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
Toost.message("保存图片失败,请检查网络连接是否正常!");
}
});
}
Glide带进度的文件下载
public void downLoadFile(final Activity activity, final String url)
SimpleTarget<File> simpleTarget = new SimpleTarget<File>() {
@Override
public void onResourceReady(File resource, GlideAnimation<? super File> glideAnimation) {
mVideoPlayerManager.playNewVideo(null, mVideoView, resource.getAbsolutePath());
}
};
ProgressTarget<String, File> trget = new ProgressTarget<String, File>(url, simpleTarget) {
int preProgress = 0;
@Override
protected void onConnecting() {
}
@Override
protected void onDownloading(long bytesRead, long expectedLength) {
int progress = (int) (((double) bytesRead / (double) expectedLength) * 100);
if (progress != preProgress) {
preProgress = progress;
mVideoLoding.setProgress(progress);
}
}
@Override
protected void onDownloaded() {
}
@Override
protected void onDelivered() {
}
};
Glide.with(getActivity()).load(url).downloadOnly(trget);
}
Glide带进度的图片加载
public void ddd(){
Glide.with(this).load(lUrl).asBitmap().placeholder(R.drawable.user_icon_default).fitCenter().listener(new RequestListener<String, Bitmap>() {
@Override
public boolean onException(Exception e, String model, Target<Bitmap> target, boolean isFirstResource) {
if (spinner != null && getActivity() != null) {
spinner.startAnimation(AnimationUtils.loadAnimation(getActivity(), R.anim.abc_fade_out));
spinner.setVisibility(View.INVISIBLE);
Toost.message("获取图片失败");
}
return false;
}
@Override
public boolean onResourceReady(Bitmap resource, String model, Target<Bitmap> target, boolean isFromMemoryCache, boolean isFirstResource) {
if (spinner != null && getActivity() != null) {
spinner.startAnimation(AnimationUtils.loadAnimation(getActivity(), R.anim.abc_fade_out));
spinner.setVisibility(View.INVISIBLE);
}
backView.setVisibility(View.INVISIBLE);
return false;
}
}).into(new ProgressTarget<String, Bitmap>(lUrl, new BitmapImageViewTarget(photoView)) {
@Override
protected void onConnecting() {
}
@Override
protected void onDownloading(long bytesRead, long expectedLength) {
int progress = (int) (((double) bytesRead / (double) expectedLength) * 100);
if (spinner != null && getActivity() != null) {
spinner.setProgress(progress);
}
}
@Override
protected void onDownloaded() {
}
@Override
protected void onDelivered() {
}
});
}