ImageView在官方的介绍上说是显示任意图像,如图标。ImageView类可以从各种来源(如资源或内容提供程序)加载图像,负责从图像中计算其度量,以便可以在任何布局管理器中使用,并提供各种显示选项,如缩放和着色。
public class MainActivity extends RxAppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView imageView = (ImageView) findViewById(R.id.image);
}
}
ImageView view = new ImageView(this);
相关方法:setAdjustViewBounds(boolean)
官方解释:通过调整ImageView的界限来保持图片的宽高比例
adjustViewBounds参数默认为false,当我们需要使用它的时候将其设置为true,其scaleType自动为“fitCenter”(当scaleType与adjustViewBounds同时在xml中设置后,如果设置了scaleType,则由adjustViewBounds自动设置的scaleType将失效,因为scaleType优先级比adjustViewBounds高),并且会根据当前View的最大宽高来填充View的内容,并且需要配合上maxHeight与maxWidth一起使用才会有效,因为其需要一个ImageView的界限
相关方法:setBaseline(int)
官方解释:视图中基线的偏移量。
baseline默认为-1,此时基线处于ImageView的顶部,当通过setBaseLine设置偏移量为正数时代表视图的基线向下偏移,为负数时向上偏移,下面我们可以通过代码与图片的结合清楚的了解那条基线的位置(当baseline与baselineAlignBottom同时存在一个视图中时,基线以设置了baselineAlignBottom为主)
图片居中展示,如果图片大与控件大小,则以中心为基准展示ImageView控件大小,图片多出的部分裁剪不展示,如果图片小于控件大小,则全部展示,其余地方留白
图片进行等比的缩放或拉伸,直到有宽或高有一方能够等于控件的宽高,多余的不展示
将图片进行等比缩放,完整的展示在ImageView上,没有铺张到的地方显示背景色留白
默认模式,图片将进行等比缩放或放大,完整的展示在ImageView上,并且没有铺张到的地方显示背景色。这里与CENTER_INSIDE有点类似,区别在于当同时都是小图片的时候,FIT_CENTER会在小图片的时候将图片拉伸至控件大小,而CENTER_INSIDE则只会居中显示,不拉伸
图片进行等比缩放或放大,完整的展示在ImageView上,这一点和FIT_CENTER相似,不同点在于FIT_START是以左上为基准,当宽完整平铺展示并且高会有留白后,图片将在控件的上方,下方留白,如果高平铺展示,宽有留白时,则右边留白
图片进行等比缩放或放大,完整展示在ImageView上,与FIT_START效果相反
图片进行缩放或放大(非等比),显示在ImageView上,这里不是等比缩放或放大,会将图片完整的展示在ImageView上,一般来说图片宽高比和控件宽高比不一致的情况下,图片会呈现扭曲感
指定一种矩阵,因为其他七种都是内部已经写好了矩阵,这一种为自己指定一种矩阵,配合setImageMatrix()方法使用
快速记忆:其中CENTER,CENTER_CROP,CENTER_INSIDE共性:居中显示,FIT_CENTER,FIT_END,FIT_START,FIT_XY共性:对图片进行缩放,MATRIX指定矩阵
ImageViewButton是一个类似Button的图像按钮
bottom_line_style.xml
用于显示具有标准QuickContact徽章和单击行为的图像的小部件
该方法现在用的不多了,参考文章:QuickContactBadge
可以染色的ImageView,实现了TintableBackgroundView与TintableImageSourceView两个接口,用作对背景颜色进行动态改变,该ImageView在5.0以下的系统容易出现问题,较难排查,不建议使用
注:在高版本中还有一些其他的子类,但是不常见,所以没有例举
ImageView的ScaleType原理及效果分析 :https://www.jianshu.com/p/fe5d2e3feed3
ImageView的ScaleType详解 :https://www.cnblogs.com/pandapan/p/4614837.html
Android中ImageView的ColorFilter图像处理解析 :https://www.jianshu.com/p/bbc77334be95
关于圆角ImageView的几种实现方式 :https://www.jianshu.com/p/626dbd93207d