Android 原生控件之二 ImageView
- 相关
- 来源
- 开始
- XML属性
- 1、android:adjustViewBounds
- 2、android:baseline
- 3、android:baselineAlignBottom
- 4、android:cropToPadding
- 5、android:maxHeight
- 6、android:maxWidth
- 7、android:scaleType
- 8、android:src
- 9、android:tint
- 10、android:tintMode
- 完事
来源
下面的知识来源来自于官方文档(全英文):
ImageView 以后要是有更新,我也会尽力跟着修正。
开始
ImageView
描述:显示图像资源,例如Bitmap或Drawable资源。 ImageView还常用于将色调应用于图像并处理图像缩放。
- 直接子类如下: ImageButton, QuickContactBadge
- 间接子类如下:ZoomButton
以下XML代码段是使用ImageView显示图像资源的常见示例:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"
/>
</LinearLayout>
XML属性
1、android:adjustViewBounds
说明:如果希望ImageView调整其边界以保持其drawable的纵横比,请将此属性设置为true。
表现:
android:layout_width="match_parent"
android:layout_height="wrap_content"
value | code | show |
false | android:adjustViewBounds=“false” | |
true | android:adjustViewBounds=“true” |
在代码中还可以使用以下方法:
public void setAdjustViewBounds (boolean adjustViewBounds)
2、android:baseline
说明:此视图中基线的偏移量。有关详细信息,请参阅{请参阅android.view.View#getBaseline}
表现:
首先,建立一个横向排列的LinearLayout
,按权重1:1放进TextView
和ImageView
。
不设置android:baseline
或者将其设置为android:baseline="0"
,得到如下图所示:
再将android:baseline
设置为android:baseline="100dp"
,得到如下图所示:
在代码中还可以使用以下方法:
public void setBaseline (int baseline)
3、android:baselineAlignBottom
说明:如果为true,则图像视图将基于其底边基线对齐。
表现:
与android:baseline
相同,不过是固定了值为控件高度。
在代码中还可以使用以下方法:
public void setBaselineAlignBottom (boolean aligned)
4、android:cropToPadding
说明:如果为true,则将裁剪图像以适合其填充。
cropToPadding是ImageView为了补偿其他属性导致我们最终的“理解的内边距效果”实现而做出的调整,目前了解到如果你的ImageView设置了scrollX scrollY或者将scaleType为MATRIX时又需要保证padding的效果,可以将cropToPadding设置为true。
详细介绍:ImageView学习笔记 在代码中还可以使用以下方法:public void setCropToPadding (boolean cropToPadding)
5、android:maxHeight
说明:一个可选参数,用于为此视图提供最大高度。
在代码中还可以使用以下方法:
public void setMaxHeight (int maxHeight)
6、android:maxWidth
说明:一个可选参数,用于为此视图提供最大宽度。
在代码中还可以使用以下方法:
public void setMaxWidth (int maxWidth)
7、android:scaleType
说明:控制如何调整图像大小或移动图像以匹配此ImageView的大小。
必须是以下常量值之一
Constant | Value | Description |
center | 5 | 将图像置于视图中心,但不执行缩放。 |
centerCrop | 6 | 均匀缩放图像(保持图像的纵横比),使图像的尺寸(宽度和高度)等于或大于视图的相应尺寸(减去填充)。然后图像在视图中居中。 |
centerInside | 7 | 均匀缩放图像(保持图像的纵横比),使图像的尺寸(宽度和高度)等于或小于视图的相应尺寸(减去填充)。然后图像在视图中居中。 |
fitCenter | 3 | 使用Matrix.ScaleToFit.CENTER缩放图像。 |
fitEnd | 4 | 使用Matrix.ScaleToFit.END缩放图像。 |
fitStart | 2 | 使用Matrix.ScaleToFit.START缩放图像。 |
fitXY | 1 | 使用Matrix.ScaleToFit.FILL缩放图像。 |
matrix | 0 | 绘图时使用图像矩阵缩放。 |
在代码中还可以使用以下方法:
public void setScaleType (ImageView.ScaleType scaleType)
8、android:src
说明:将drawable设置为此ImageView的内容。
在代码中还可以使用以下方法:
public void setImageResource (int resId)
9、android:tint
说明:图像的着色颜色。默认情况下,色调将使用SRC_ATOP模式进行混合。请注意,出于兼容性原因,这与ImageView.setImageTintList(ColorStateList)使用的默认SRC_IN色调模式以及其他视图上类似的色调属性不一致。值是“#rgb”,“#arbb”,“#rrggbb”或“#aarrggbb”形式的颜色值。
表现:
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="centerInside"
android:src="@mipmap/icon_calculator"
android:tint="#FF0101" />
10、android:tintMode
说明:混合模式用于应用图像色调。
必须是以下常量值之一
Constant | Value | Description |
add | 10 | 结合色调和drawable颜色以及Alpha通道,将结果钳制到有效的颜色值。饱和(S + D) |
multiply | e | 将drawable的颜色和alpha通道与色调相乘。 [Sa * Da,Sc * Dc] |
screen | f | [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc] |
src_atop | 9 | 色调在drawable上方绘制,但是drawable的alpha通道掩盖了结果。 [Da,Sc * Da +(1-Sa)* Dc] |
src_in | 5 | 色调被drawable的alpha通道遮盖。 drawable的颜色通道被抛出。 [Sa * Da,Sc * Da] |
src_over | 3 | 色彩绘制在drawable的顶部。 [Sa +(1-Sa)* Da,Rc = Sc +(1-Sa)* Dc] |
在代码中还可以使用以下方法:
public void setImageTintMode (PorterDuff.Mode tintMode)
完事