本文主要介绍了Android的ImageView类中ScaleType属性的设置,同时也谈到了实现100%ImageView宽度的图像宽度和按高度比例自动缩放的方法。有需要的可以参考一下。
类型设置图
图文搭配,清晰的展现出每个属性的效果,
感觉CENTER_CROP很有用,长度和宽度自动适应Imageview。整张图片自动缩略填充整个区域并显示在中央(高度和宽度不一定是视图大小)。它以前是用JS在网页上实现的,它显示在
当初android还在尝试用java自己实现这个效果。太麻烦了,但没想到系统会方便很多。
ImageView的Scaletype决定了图片在视图上显示时的外观,例如放大多少比例,是显示图片的全部还是部分,等等。
设置包括:
1.在布局xml中定义android:scaleType='CENTER'。
2.或者在代码中调用imageview . setscaletype(imageview . scaletype . center);
接下来用最直观的方式解释ScaleType的值和对应的显示效果:3354实景演示。
首先,它是测试中使用的原始图片:
(产品尺寸:128 * 128)
(尺寸:640 * 428)
好了,让我们开始下面的测试:
1.
SetScaleType(ImageView。scale type . CENTER);
按照原始尺寸在中间显示图片。当图片的长度/宽度超过视图的长度/宽度时,将显示拍摄的图片的中间部分。
2.
SetScaleType(ImageView。scale type . CENTER _ CROP);
按比例放大图片尺寸并显示在中央,使图片的长度(宽度)等于或大于视图的长度(宽度)。
3.
setScaleType(ImageView。scale type . CENTER _ INSIDE);
将图片内容完整地显示在中央,通过缩小或原尺寸使图片的长/宽等于或小于视图的长/宽。
4.
setScaleType(ImageView。scale type . FIT _ CENTER);
根据视图的宽度按比例放大/缩小图片,并将其显示在中央。
5.FIT_START,FIT_END在图像缩放效果上与FIT_CENTER相同,只是显示位置不同。FIT_START放在顶部,FIT_CENTER居中,FIT_END放在底部。
这里就不举例了。
6.FIT_XY
不要按比例缩放图片,目标是用图片填满整个视图。
图片的宽度是imageview宽度的100%,高度会自动按比例缩放。
在ListView中,为了实现100%图像宽度适配ImageView容器宽度并使高度自动缩放的功能,查了很多资料,一下午都没有找到现成的方法,但似乎有了结论,那就是:
安卓靠自己是达不到这样的效果的,我们得自己动手。
使用scaleType属性设置视图中图片的缩放模式。本以为fit_center可以实现,结果无语,莫名其妙。它未能实现与容器宽度匹配的宽度,并且两侧都有空白区域。
解决方法:
1.仍然需要利用scaleType的center_crop效果,使图片始终能够按比例填充容器,不留空白区域。
2.剩下的主要功能就是动态设置ImageView容器的高度,让图片尽可能完整的显示出来,也可以达到maxHeight的效果。如果图像高度比太大,列表就不会太长。
int max height=zui . dp2px(m context,300);
int height=(int)((float)view . getwidth()/drawable . getminimumwwidth()* drawable . getminimumheight());
if(height max height)height=max height;
view.setLayoutParams(新的RelativeLayout。LayoutParams(RelativeLayout。LayoutParams.MATCH_PARENT,height));
View是ImageView图片视图容器对象,drawable是要显示的图片资源。
Drawable.getMinimumWidth()和drawable.getMinimumHeight()用于获取图片在屏幕上可见的高度和宽度,不一定是图片原来的高度和宽度。跟屏幕每寸像素有关系,大概是这样的。注意使用浮点值类型,否则可能会四舍五入到1的倍数。
将dp值转换为像素值,因为java代码中操作的高度和宽度都是像素值,所有样式都是用dip兼容屏幕。
公共静态int dp2px(上下文Context,int dp)
{
float scale=context . get resources()。getDisplayMetrics()。
}
好了,大概就是这样。顺便拿个测试结果图。
其实center_crop可以简单实现这个功能,但是不会自动扩展高度。相反,它应该使用图片的可见高度作为容器高度,然后显示容器覆盖。也就是说,集装箱高度不会成比例增加,导致图片显示几乎不到一半。图片小的话几乎没用,还是要动态调整。如果图片尺寸较大,特别是高度合适,可以直接使用。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。