关于ImageView,常很容易混淆background 和 src 两个属性的特征:
(1)background通常指的都是
背景,而src指的是内容
(2)当使用src填入图片时,是按照图片大小直接填充,并不会进行拉伸。

代码用法设置:

一.设置ImageView的src:

1.image.setImageDrawable(getResources().getDrawable(R.drawable.vod_detail_actor_default));

2.String path=Environment.getExternalStorageDirectory()+File.separator+”test.jpg”;

Bitmap bm = BitmapFactory.decodeFile(path);

image.setImageBitmap(bm);

3.image.setImageBitmap(BitmapFactory.decodeResource(page.getContext().getResources(), R.drawable.vod_detail_actor_default));

4.image.setImageResource(R.drawable.vod_detail_actor_default);

注:

setImageResource(id)会根据设备分辨率进行图片大小缩放适配。

源码中对该接口的注释:

在UI线程中处理bitmap,这可能造成主线程的延迟(如导致Activity启动延迟等情况)。

可以考虑使用setImageDrawable(Drawable)或setImageBitmap(Bitmap)代替。

setImageBitmap(BitmapFactory.decodeResource(res, id))大小需要手动调试。

setImageBitmap实际还是调用的setImageDrawable,但是强制setImageDrawble执行完整的setImageDrawable而不是做对象引用比较。setImageBitmap将Bitmap对象封装成Drawable对象,如果提供了完整的各种分辨率下的图片,两种方法没有区别。

另外:setImageDrawable(null)可以清除一个ImageView控件设置的图片。

因此综合来看,setImageDrawable是最省内存最高效的,如果担心图片过大或者图片过多影响内存和加载效率,可以自己解析图片然后通过调用setImageDrawable方法进行设置。

二.设置ImageView的background:

1.image.setBackground(getResources().getDrawable(R.drawable.vod_detail_actor_default));

2.image.setBackgroundResource(R.drawable.vod_detail_actor_default);

3.image.setBackgroundDrawable(getResources().getDrawable(R.drawable.vod_detail_actor_default));

在ImageView中,可以同时设置src和background属性(为了减少绘制,可以根据使用场景来设置相应属性);另外还有一个混淆的地方就是:android:scaleTyle这个属性(scaleType 只对src属性有效)如果需要对其进行不同图片的样式展示,就需要使用android:scaleTyle这个属性。

这里就只列出scaleType 相关值定义,实际效果相信大家本地实践就清楚了:

1.fitXY:对图像的横向与纵向进行独立缩放,使得该图片完全适应ImageView,但是图片的横纵比可能会发生改变;

2. fitStart:保持纵横比缩放图片,直到较长的边与Image的边长相等,缩放完成后将图片放在ImageView的左上角 ;

3.fitCenter:同上,缩放后放于中间;

4. fitEnd:同上,缩放后放于右下角;

5.center:保持原图的大小,显示在ImageView的中心。当原图的size大于ImageView的size,超过部分裁剪处理;

6. centerCrop:保持横纵比缩放图片,直到完全覆盖ImageView,可能会出现图片的显示不完全;

7. centerInside:保持横纵比缩放图片,直到ImageView能够完全地显示图片;

8. matrix:默认值,不改变原图的大小,从ImageView的左上角开始绘制原图,原图超过ImageView的部分作裁剪处理

ImageView 加载图片方法相关推荐

  1. java imageview的使用_Android使用控件ImageView加载图片的方法

    在 Android 加载图片一般使用 ImageView,这里简单记录一下这个控件的使用方法. 最简单就是在 xml 里直接使用 ImageView 标签: android:orientation=& ...

  2. android 加载网络bitmap图片 oom 简书_Android常见问题--ImageView加载图片OOM

    开发中给ImageView加载一个高质量图片时,APP抛出了"Canvas: trying to draw too large(840253440bytes) bitmap."的异 ...

  3. Android 自定义ImageView加载图片

    自定义imageview功能: 可以实现设置图片显示的时候,依据本身的比例进行图片的缩放 加载图片效果: 使用ImageLoader来加载 图片: 首先将ImageLoader的jar包关联到项目中 ...

  4. WinForm PictureBox加载图片方法

    private void LoadImage_Click(object sender, EventArgs e) {// 从文件加载pictureBox1.Image = Image.FromFile ...

  5. ImageView加载图片 路径没问题,图片不显示

    先说一下如何获得本地图片的路径. //点击图片事件 ib.setOnClickListener(new View.OnClickListener() {@Overridepublic void onC ...

  6. VC++几种加载图片方法的讨论(附源码)

    目录 1.图片加载的相关说明 2.使用LoadBitmap来加载位图图片 3.使用CImage加载图片

  7. Flutter 加载图片方法

    写文章的目的是记录一下学习Flutter过程,二是解惑一下网上流传的Flutter 加载图片其实好多是有坑的,即无法加载图片.画重点了:目前Flutter 加载2倍图,3倍图是没有好的方案的.要想加载 ...

  8. 图片墙瀑布式加载图片方法

    像嘀咕网一样,图片和回复异步以图片墙的方式加载到页面的方法.需要引入附件中的包: 首先在photo.html中显示第一页的内容,图片墙的最外面要有如下div <div style="v ...

  9. html photoswipe原理,PhotoSwipe异步动态加载图片方法

    在开发搜房家居M站的时候,搜房家居装修效果图相册展示效果需要用到PhotoSwipe插件来显示图片. 特点:1. 家居提供的接口,每次只能获取一张图片 2. 装修效果图的张数不限. 3. 从Photo ...

最新文章

  1. flask sqlalchemy踩坑记录
  2. 关于eclipse的注释和反注释的快捷键
  3. 1034 Head of a Gang(图的DFS解法) 擦边大法好
  4. 再探C#类与结构体究竟谁快——考虑栈变量、栈分配、64位整数、密封类
  5. java基础入门课后习题_《Java基础入门》课后习题及答案
  6. html获取鼠标按键数,鼠标在IE、Firefox和Opera点击键所对应的数字代码
  7. Scala声明变量、常用类型、条件表达式、块表达式、循环
  8. php推荐码生成,最新最全PHP生成制作验证码代码详解(推荐),验证码详解_PHP教程...
  9. ubuntu mysql 中午_Ubuntu更改MySQL字符集UTF-8,正确显示中文
  10. 基于ASA防火墙的SSL ×××配置
  11. MyEclipse 如何将 jar 包导入项目中
  12. 【转】3.1SharePoint服务器端对象模型 之 访问文件和文件夹(Part 1)
  13. 剑指offer:63-66记录
  14. call() , apply() ,bind()的用法
  15. Java DataInputStream skipBytes()方法与示例
  16. github系列(一) Windows环境下载与安装
  17. CAD arx常用函数
  18. win10计算机出现乱码,win10系统出现汉字乱码如何解决
  19. tomcat、APR模式
  20. OpenCV实现击中击不中变换和形态学细化

热门文章

  1. 亚航cookie加密 acw_sc_v3值
  2. 一个关于投资的顿悟,恍然大悟那种顿悟!
  3. C语言实现:三色球问题
  4. linux下用cat查看了一个文件, 导致界面乱码
  5. linux部署项目报错java.sql.SQLSyntaxErrorException: Table ‘xxx‘ doesn‘t exist
  6. 微信硬件蓝牙教程全集
  7. 把一个对象数组中的每个对象的属性名,从中文改成英文
  8. 第五十七篇:VS2015建立一个完整的c++工程:头文件.h 源文件.cpp,自动生成类
  9. 硬盘使用时间能改吗,怎么修改呢?
  10. Mysql学习笔记(6)分页查询、联合查询、DML语言