首页 > 代码库 > ImageView的scaleType属性

ImageView的scaleType属性

ImageView的scaleType属性

文章中“长边”均指从小放大过程中先达到ImageView边界的边,反之,为短边

1.center:图片居中显示,但是不进行缩放。如果图片过大,则只能部分显示,超出ImageView的部分无法显示。如图center_1与center_2。

                 技术分享                                            技术分享

                        center_1                                                          center_2

 

2.centerCrop:图片居中显示,但是会将图片进行等比缩放,保证较短的边达到ImageView边界(此时另一条边往往会放大到超过ImageView边界,则超出ImageView的部分无法显示。如图centerCrop_1与centerCrop_2。

               技术分享                                      技术分享

                       centerCrop_1                                                centerCrop_2

 

3.centerInside:图片居中显示,如果图片较小时,直接显示原图;如果图片较大时,将图片按比例缩放,使得长边达到ImageVie边界(文章中“长边”均指从小放大过程中先达到ImageView边界的边,反之,为短边),保证图像完全显示在ImageView中,如图centerInside_1与centerInside_2。由图可以看出,图片较小时,centerInside与center效果一样(图centerInside_2与center_2)

               技术分享                                      技术分享

 

                     centerInside_1                                                 centerInside_2

 

 4.fitCenter:图片居中显示,并按比例缩放,使得长边达到ImageVie边界,保证图像完全显示在ImageView中,如图fitCenter_1与fitCenter_2。由图可以看出,图片边界超出ImageView边界时fitCenter与centerInside效果一样(图fitCenter_1与centerInside_1)

                 技术分享                                    技术分享

 

                        centerCrop_1                                                 centerCrop_2

 

5.fitStart,fitEnd:对图片进行等比缩放,类似fitCenter,但是显示位置与fitCenter不一样。当图片横向为长边,则fitStart图像显示在ImageView上侧,fitEnd显示在下侧,如图所示。若fi图像纵向为长边,则fitStart图像显示在ImageView左侧,fitEnd图像显示在ImageView右侧。

                      技术分享                                           技术分享

                             fitStart                                                           fitEnd

 6.fitXY:将图片两边分别缩放至与ImageView重合(故为非等比缩放)。如图所示。

                   技术分享

 

                                fitXY

注意:上述属性显示图片时均不限制图片大小,因为对于大图片,要么会被自动缩放,要么部分显示。但在编程时有时会遇到图片无法显示的情况:

输出来显示:Bitmap too large to be uploaded into a texture (3120x4208, max=4096x4096)

原因:当开启硬件加速的时候,GPU对于OpenGLRenderer 有一个限制,这个不同的手机会有不同的限制。比如上述输出显示该手机限制宽高均不超过4096,而图片高度为4208超过4096,故无法加载。

解决方法:显示前对图像进行适当缩放。

ImageView的scaleType属性