Android开发中ImageLoder加载网络图片时将图片设置为ImageView背景的方法
作者:zuochangman 发布时间:2021-12-14 14:58:38
本文实例讲述了Android开发中ImageLoder加载网络图片时将图片设置为ImageView背景的方法。分享给大家供大家参考,具体如下:
最近开始接触到android的开发,在开发中使用ImageLoder加载网络图片,但是框架加载的图片默认是通过ImageView的src属性设置,所以在某些场合是不符合需求,比如通过设置src在某些场景下是不能填充满整个ImageView,但是通过设置背景就可以实现,而框架并没有提供将图片设置为背景的方法,我在网上找了半天也看到了一些解决方案,但不是我想要的,于是我决定去看看源码是怎么实现,果然在源码中就找到了“新大陆”,压抑不住内心的喜悦赶紧写博客分享,也算做个笔记,希望对大家有帮助。
废话到此为止 开始将进入主题(上代码)
/**
* 加载网络图片设置为ImageView背景
*
* @param url
* @param view
*/
public void loadImageToBackground(String url, ImageView view) {
ImageLoader.getInstance().displayImage(url, new BgImageViewAware(view));
}
上面这个方法就是一个简单的使用ImageLoder加载网络图片的例子,如果要将图片设置为背景,其核心部分就在 BgImageViewAware这个类里面,BgImageViewAware是一个自定义的类,它继承自ImageViewAware这个类,我在看源码的时候发现ImageLoder就是通过 ImageViewAware这个类把加载的图片设置到src属性的(有兴趣的小伙伴可以自己去看源码,源码我就不贴出来了),所以我只需要重写这个类的方法将图片设置到背景就解决了
下面是BgImageViewAware类的代码:
/**
* <pre>将图片设置为ImageView的背景</pre>
* Created by ZCM on 2016/8/5. version 1.0
*/
public class BgImageViewAware extends ImageViewAware {
public BgImageViewAware(ImageView imageView) {
this(imageView, true);
}
public BgImageViewAware(ImageView imageView, boolean checkActualViewSize) {
super(imageView, checkActualViewSize);
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Override
public boolean setImageBitmap(Bitmap bitmap) {
//重写父类方法,将图片设为背景
if(Looper.myLooper() == Looper.getMainLooper()) {
ImageView imageView = (ImageView)this.imageViewRef.get();
if(imageView != null) {
imageView.setBackground(new BitmapDrawable(bitmap));
return true;
}
}
return false;
}
@Override
public boolean setImageDrawable(Drawable drawable) {
return super.setImageDrawable(drawable);
}
}
到了这一步,将图片设置为ImageView的背景的整个功能算是我完成了(其实很简单^_^)
希望本文所述对大家Android程序设计有所帮助。
来源:http://blog.csdn.net/zuochangman/article/details/52622776
猜你喜欢
- IoC——Inversion of Control,控制反转在Java开发中,IoC意味着将你设计好的类交给系统去控制,而不是在你的类内部控
- 提到迭代器我们不能不想到迭代器模式,那我就以迭代器模式作为开场白.在我们的应用程序中常常有这样一些数据结构:它们是一个数据的集合,如果你知道
- 本文实例讲述了Android TextView显示Html类解析的网页和图片及自定义标签。分享给大家供大家参考,具体如下:Android系统
- 亲爱的读者,在这篇文章中,我提供了一些c#编程的最佳实践。你是否在用户输入验证中使用异常处理机制?如果是,那么你就是那个把你的项目执行速度降
- 服务器提交了协议冲突. Section=ResponseHeader Detail=CR 后面必须是 
- Kotlin this详解及实例为了表示当前函数的接收者(receiver), 们使用this表达式:在类的成员函数中,this指向这个类的
- 本文实例为大家分享了java实现顺时针打印矩阵的具体代码,供大家参考,具体内容如下题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每
- 本文实例讲述了Java日期操作类常见用法。分享给大家供大家参考,具体如下:一 取出当前日期时间1 代码import java.time.*;
- Navigator 的 push 和 pop方法Navigator 导航器的 push 和 pop 方法可以携带参数在页面间传递,其他变形的
- 启动类的存放位置今天,写了一个项目,但是启动类为什么一直报错我是放在这个位置的,但是就一直报放在默认包错误 想记录下微服务启动类的
- 一、Drools引擎简介1、基础简介Drools是一个基于java的规则引擎,开源的,可以将复杂多变的规则从硬编码中解放出来,以规则脚本的形
- JAVA 枚举单例模式及源码分析的实例详解 单例模式的实现有很多种,网上也分析了
- 本文以实例形式讲述了C#通过反射创建自定义泛型的实现方法,分享给大家供大家参考。具体如下:比如有这样一个泛型:Demo.GenericsSi
- 主要有四个:public——成员可以由任何代码访问。private——成员只能由类中的代码访问(如果没有使用任何关键字,就默认使用这个关键字
- 第一次接触到随机数还是在c语言里面 使用的是 rand(); 但是重新执行一次的时候会发现,诶,居然和上一次执行的结果是一样的,因为没有初始
- 思路不清晰的小伙伴可以先在es中把聚合代码写出来{ "aggs": { "
- Model与Session区别什么是Session:Session:在计算机中,尤其是在网络应用中,称为“会话”。它具体是指一个终端用户与交
- 1、Alt+*(按钮快捷键)按钮快捷键也为最常用快捷键,其设置也故为简单。在大家给button、label、menuStrip等其他控件的T
- 一个非侵入的api编译、收集、Rest文档生成工具。工具通过分析代码和注释,获取文档信息,生成RestDoc文档前言程序员一直以来都有一个烦
- 概念异常处理的概念起源于早期的编程语言,如 LISP、PL/I 和 CLU。这些编程语言首次引入了异常处理机制,以便在程序执行过程中检测和处