OBL*_*OBL 6 android touchimageview android-glide
我正在尝试将大型的高分辨率(3225x4800)图片从URL加载到一家报纸公司的幻灯片中。我要加载的图像是此高分辨率图像。
String url = "http://www.businessweekmindanao.com/content/wp-content/uploads/2015/10/fitness-and-wellness-poster-final.jpg";
Glide.with(getActivity()).load(url).asBitmap().into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
imageView.setImageBitmap(resource);
}
});
Run Code Online (Sandbox Code Playgroud)
我从此处提供的解决方案中使用Mike Ortiz的TouchImageView:从URL加载资源时,https : //github.com/MikeOrtiz/TouchImageView/issues/135。但它似乎仅适用于小分辨率图像,并且无法加载高质量图像。
我从stackoverflow中尝试了另一种解决方案:Android:未显示带有UIL和TouchImageView的ImageView,它试图修改Mike的库的onMeasure()方法。它适用于:
Glide.with(getActivity()).load(url)
.into(imageViewPreview);
Run Code Online (Sandbox Code Playgroud)
问题在于它以非常低的分辨率加载图像。
有没有办法加载像Glide和TouchImageView这样的高分辨率图像:7480x3740?我怎么做?
我找到了适合我需求的解决方案。overlay()方法可以解决问题。为目标分辨率设置更高的数字似乎是最终的解决方法,但是数字越大,显示图像所需的时间就越长,因此实现预加载器/进度条是明智的。
Glide.with(getContext())
.asBitMap() //[for new glide versions]
.load(url)
//.asBitmap()[for older glide versions]
//.placeholder(R.drawable.default_placeholder)
.override(1600, 1600) // Can be 2000, 2000
.into(new BitmapImageViewTarget(imageViewPreview) {
@Override
public void onResourceReady(Bitmap drawable, GlideAnimation anim) {
super.onResourceReady(drawable, anim);
progressBar.setVisibility(View.GONE);
}
});
Run Code Online (Sandbox Code Playgroud)
relativeLayout xml上的自定义居中的预加载器/进度条占位符指示符:
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
Run Code Online (Sandbox Code Playgroud)
这很干净,因为与在Glide中加载图像asBitmap()有关的另一个问题将不会显示错误和预加载器/进度指示器的占位符:
Glide.with(getActivity())
.load(url).asBitmap()
.placeholder() //<== will simply not work:
.error() // <== is also useless
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
imageView.setImageBitmap(resource);
}
});
Run Code Online (Sandbox Code Playgroud)
在研究中,我还尝试了毕加索解决方案来处理高质量图像:
Picasso.with(getContext())
.load(url)
.resize(1500, 0)
.placeholder(R.drawable.default_placeholder)
.error(R.drawable.download_error)
.into(imageViewPreview);
Run Code Online (Sandbox Code Playgroud)
最后,我对Glide版本感到满意。
我希望这将对可能面临相同挑战的任何人有所帮助。
| 归档时间: |
|
| 查看次数: |
6369 次 |
| 最近记录: |