关于android中ImageView的外观,即图片在其内显示出的样子,与布局文件中adjustViewBonds和scaleType
属性的关系。我进行了一些探索。现跟大家共享,欢迎各位指教。分别将adjustViewBonds设为true和false,与各种scaleType搭配,产生了不同效果。(上面的ImagView的adjstViewBonds值为false;下面的ImagView的adjstViewBonds值为true;两个ImagView大小相同)如下:

代码:

  1. <ImageView
  2. android:id="@+id/imageView1"
  3. android:layout_width="fill_parent"
  4. android:layout_height="200dip"
  5. android:adjustViewBounds="false"
  6. android:scaleType="centerInside"//此处每次更改
  7. android:src="@drawable/ic_3" />//此处两幅图间更改,一副图的大小较小,另一幅的较大。
  8. <ImageView
  9. android:id="@+id/imageView2"
  10. android:layout_width="fill_parent"
  11. android:layout_height="200dip"
  12. android:adjustViewBounds="true"
  13. android:scaleType="centerInside"//此处每次更改
  14. android:src="@drawable/ic_3" />//此处两幅图间更改,一副图的大小较小,另一幅的较大。

原图:


1、scaleType=“matrix”
如图pic1、pic2.
是保持原图大小、从左上角的点开始,以矩阵形式绘图。

pic1
 

pic2
 
2、scaleType=“fitXY”
如图pic3、pic4.
是将原图进行横方向(即XY方向)的拉伸后绘制的。

pic3
 

pic4
 
3、scaleType=“fitStart”
如图pic5、pic6。
是将原图沿左上角的点(即matrix方式绘图开始的点),按比例缩放原图绘制而成的。

pic5
 

pic6
 
4、scaleType=“fitCenter”
如图pic7、pic8。
是将原图沿上方居中的点(即matrix方式绘图第一行的居中的点),按比例缩放原图绘制而成的。

pic7
 

pic8
 
5、scaleType=“fitEnd”
如图pic9、pic10。、
是将原图沿下方居中的点(即matrix方式绘图最后一行的居中的点),按比例缩放原图绘制而成的。

pic9
 

pic10
 
6、scaleType=“Center”
如图pic11、pic12。
是保持原图大小,以原图的几何中心点和ImagView的几何中心点为基准,只绘制ImagView大小的图像。

pic11
 
 pic12
 
7、scaleType=“centerCrop”
如图pic13、pic14。
不保持原图大小,以原图的几何中心点和ImagView的几何中心点为基准,只绘制ImagView大小的图像(以填满
ImagView为目标,对原图进行裁剪)。

pic13
 

pic14
 
8、scaleType=“centerInside”
如图pic15、pic16.
不保持原图大小,以原图的几何中心点和ImagView的几何中心点为基准,只绘制ImagView大小的图像(以显示
完整图片为目标,对原图进行缩放)。

pic15
 

pic16

(事实证明,adjustViewBonds单独设置无影响。)

依本人之见,scaletype的种类分为三类matrix(默认)、fit-X类、和center类。matrix就不多说。fit-X类中,
fitStart、fitCenter和fitEnd之间的都是根据需要使原图改变对ImgView进行适应,按matrix进行绘制,但它们
的区别在于基准不同。fitStart的基准为最上角的点(即matrix方式开始的点)fitCenter的基准点为中间的点
(matrix方式中可以使图片居中的点),而fitEnd的基准点为右下角的点(即matrix方式最后绘制点)。center类
中,center、centerCrop、centerInside都是以原图的几何中心点和ImagView的几何中心点为基准,且只绘制
ImagView大小的图像,不同的是是否保持原图大小和绘图的目标不同、采取的手段不同。

最新文章

  1. Servlet数据缓存
  2. Jaunt登陆索尼PSVR,为其提供大量VR视频
  3. NoSQL之【MongoDB】学习(二):DML和查询操作说明
  4. 进程控制块的task_struct结构
  5. 小知识点 LINQ中延时求值和主动求值的区别
  6. android:layout_weight总有你不知道的用法.
  7. [iOS 开发] Xcode常见报错及解决办法
  8. UE4学习笔记(三): 为什么使用C++替代UnrealScript?
  9. Windows下MySQL双向同步及环形同步的实现
  10. C# 编译器选项 /platform(指定输出平台)32位程序运行到x64平台的问题
  11. List environment variables from Command Prompt
  12. Ubuntu中Qt+opencv图像显示
  13. RecyclerView.Adapter
  14. [Unity Asset]AssetBundle系列——游戏资源打包
  15. Python3 中 爬网页 \uxxx 问题
  16. django——模板层
  17. Go语言栈定义及相关方法实现
  18. win8 下面 listen 的队列长度貌似无效了 上c/s 代码 并附截图,有图有真相
  19. Spring boot自动设置包依赖,根本不用记,
  20. 洛谷P3721 单旋

热门文章

  1. DzzOffice共享文件夹、共享目录设置
  2. python发布模块的原理及部分讲解
  3. Android百度地图开发(二)地图覆盖物
  4. iOS App中数据加载的6种方式
  5. oracle 体系结构解析
  6. [WebService]之Schema
  7. LeetCode(7) - Reverse Integer
  8. 2d网络游戏的延迟补偿(Lag compensation with networked 2D games)
  9. MSSQL 2005数据库可疑状态
  10. linux之间连接—使用SSH