Glide使用总结

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() {

                }
            });
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值