新更,新版Glide如何把图片加载到其他控件上:
很多时候我们用Glide加载图片,可是并不一定非得加载到ImageView上面,那怎么办呢,答案就是使用Target,而新版本舍弃了原本的SimpleTarget,所以我这里使用CustomViewTarget来演示:
Glide.with(mActivity).asBitmap().load(url).into(object : CustomViewTarget<AppCompatImageView, Bitmap>(view) {
override fun onLoadFailed(errorDrawable: Drawable?) {
hideLoading()
}
override fun onResourceCleared(placeholder: Drawable?) {
}
override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
bitmap = resource//获取bitmap
view.setImageBitmap(bitmap)
}
})
也可以用以上方法来通过Glide来获取图片的bitmap对象
————————我————是————分————割————线——————————
今天在看书的时候学习到了Glide这个强大的框架,github项目主页地址:https://github.con/bumptech/glide
这个框架有什么用呢?它是一个超级强大的图片加载库,它可以加载本地图片,网络图片,GIF甚至本地视频,重点是:它真的好简单!!!好简单!!好简单!!
比如之前我在项目中使用到的家在网络图片,又是下载又是解压什么的,超级麻烦,然而这个框架内已经帮你完成了所有的操作,你仅仅需要在gradle文件中添加依赖:
implementation 'com.github.bumptech.glide:glide:3.7.0'
然后就可以啦,这里我拿到一个url,然后在布局文件中加入一个ImageView,然后再java文件中:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView imageView = findViewById(R.id.wtf);
Glide.with(this).load("http://sjsh.oss-cn-hangzhou.aliyuncs.com/album/10291/oss-19db778e-f073-4b94-a9c3-918ce123abe2_960_720.png").into(imageView);
}
好了,就是这一行代码,我们所要加载的网络图片就已经完成了,怎样是不是超级简单?现在来看一下,这里的with()方法中可以传入context,activity甚至fragment,然后再load()中我们可以传入URL,名字,本地路径,然后再用into()传入需要显示图片的view,
效果图如上。
这里高度写死,所以图片变小了,来说明一下为什么需要用到Glide,如果我们直接把图片下载下来,放到drawable文件里面设置不是更方便吗?这么说是的,但是,如果我们使用的是超高清的图片,像素非常高,不进行压缩就直接展示的话,很容易引起内存溢出,而Glide在这里面已经帮你处理好了。是不是很强大?
最后说一下:如果你发现用了以上方法,但是加载不出来的话:请确认网络权限请确认是否添加网络权限