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”

安卓原生开发组件权重 安卓原生控件_android

true

android:adjustViewBounds=“true”

安卓原生开发组件权重 安卓原生控件_安卓原生开发组件权重_02

在代码中还可以使用以下方法:
public void setAdjustViewBounds (boolean adjustViewBounds)

2、android:baseline

说明:此视图中基线的偏移量。有关详细信息,请参阅{请参阅android.view.View#getBaseline}

表现:

首先,建立一个横向排列的LinearLayout,按权重1:1放进TextViewImageView

不设置android:baseline或者将其设置为android:baseline="0",得到如下图所示:

安卓原生开发组件权重 安卓原生控件_ImageView_03


再将android:baseline设置为android:baseline="100dp",得到如下图所示:

安卓原生开发组件权重 安卓原生控件_android_04

在代码中还可以使用以下方法:
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" />

安卓原生开发组件权重 安卓原生控件_缩放_05

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)

完事