©
이 문서에서는PHP 중국어 웹사이트 매뉴얼풀어 주다
ImageView
译者博客:http://blog.toolib.net/cnmahj
版本:Android 3.1 r1
结构
继承关系
public classView.OnClickListnerextendsView
java.lang.Object
android.view.View
android.widget.ImageView
直接子类
ImageButton, QuickContactBadge
间接子类
ZoomButton
类概述
显示任意图像,例如图标。ImageView类可以加载各种来源的图片(如资源或图片库),需要计算图像的尺寸,比便它可以在其他布局中使用,并提供例如缩放和着色(渲染)各种显示选项。
嵌套类
enum ImageView.ScaleType
将图片边界缩放,以适应视图边界时的可选项
XML属性
属性名称 |
描述 |
|||||||||||||||||||||||||||
android:adjustViewBounds |
设置该属性为真可以在ImageView调整边界时保持图片的纵横比例。(译者注:需要与maxWidth、MaxHeight一起使用,否则单独使用没有效果。) |
|||||||||||||||||||||||||||
android:baseline |
视图内基线的偏移量 |
|||||||||||||||||||||||||||
android:baselineAlignBottom |
如果为true,图像视图将基线与父控件底部边缘对齐。 |
|||||||||||||||||||||||||||
android:cropToPadding |
如果为真,会剪切图片以适应内边距的大小。(译者注:是否截取指定区域用空白代替。单独设置无效果,需要与scrollY一起使用,效果如下,实现代码见代码部分: ) |
|||||||||||||||||||||||||||
android:maxHeight |
为视图提供最大高度的可选参数。(译者注:单独使用无效,需要与setAdjustViewBounds一起使用。如果想设置图片固定大小,又想保持图片宽高比,需要如下设置: 1)设置setAdjustViewBounds为true; 2)设置maxWidth、MaxHeight; 3)设置设置layout_width和layout_height为wrap_content。) |
|||||||||||||||||||||||||||
android:maxWidth |
为视图提供最大宽度的可选参数。 |
|||||||||||||||||||||||||||
android:scaleType |
控制为了使图片适合ImageView的大小,应该如何变更图片大小或移动图片。一定是下列常量之一:
(译者注:设置图片的填充方式。) |
|||||||||||||||||||||||||||
android:src |
设置可绘制对象作为ImageView显示的内容 |
|||||||||||||||||||||||||||
android:tint |
为图片设置着色颜色。(译者注:将图片渲染成指定的颜色。见下图: 左边为原图,右边为设置后的效果,见后面代码。) |
公共方法
public final voidclearColorFilter()
(译者注:清除颜色过滤,参见这里)
public intgetBaseline()
返回部件顶端到文本基线的偏移量。如果小部件不支持基线对齐,该方法返回-1。
返回值
小部件顶端到文本基线的偏移量;或者是-1当小部件不支持基线对齐时。
public booleangetBaselineAlignBottom()
返回当前视图基线是否将考虑视图的底部。
参见
setBaselineAlignBottom(boolean)
public DrawablegetDrawable()
返回视图的可绘制对象;如果没有关联可绘制对象,返回空。
public MatrixgetImageMatrix()
返回视图的选项矩阵。当绘制时,应用于视图的可绘制对象。如果没有矩阵,函数返回空。不要更改这个矩阵。如果你要为可绘制对象设置不同的矩阵,请调用setImageMatrix()。
public ImageView.ScaleTypegetScaleType()
返回当前ImageView使用的缩放类型。
相关XML属性
android:scaleType
参见
ImageView.ScaleType
public voidinvalidateDrawable(Drawable dr)
使指定的可绘制对象失效。
参数
dr要设为失效的可绘制对象。
public voidjumpDrawablesToCurrentState()
调用与视图相关的所有可绘制对象的Drawable.jumpToCurrentState()方法。
public int[]onCreateDrawableState(int extraSpace)
为当前视图生成新的Drawable状态时发生。当视图系统检测到缓存的可绘制对象失效时,调用该方法.你可以使用getDrawableState()方法重新取得当前的状态。
参数
extraSpace如果为非零,该值为你要在返回值的数组中存放的你自己的状态信息的数量。
返回值
返回保存了视图的当前Drawable状态的数组。
public voidsetAdjustViewBounds(boolean adjustViewBounds)
当你需要在ImageView调整边框时保持可绘制对象的比例时,将该值设为真。
参数
adjustViewBounds是否调整边框,以保持可绘制对象的原始比例。
相关XML属性
android:adjustViewBounds
public voidsetAlpha(int alpha)
(译者注:设置透明度)
public voidsetBaseline(int baseline)
设置部件顶部边界文本基线的偏移量。这个值覆盖setBaselineAlignBottom(boolean)设置的属性值。
参数
baseline使用的基线,或不提供设置为-1。
相关XML属性
android:baseline
参见
setBaseline(int)
public voidsetBaselineAlignBottom(boolean aligned)
设置是否设置视图底部的视图基线。设置这个值覆盖setBaseline()的所有调用。
参数
aligned如果为true,图像视图将基线与父控件底部边缘对齐。
相关XML属性
android:baselineAlignBottom
public final voidsetColorFilter(int color)
为图片设置着色选项。采用SRC_ATOP合成模式。
参数
color应用的着色颜色。
相关XML属性
android:tint
public voidsetColorFilter(ColorFilter cf)
为图片应用任意颜色滤镜。
参数
cf要应用的颜色滤镜(可能为空)
public final voidsetColorFilter(int color, PorterDuff.Mode mode)
为图片设置着色选项。
参数
color应用的着色颜色。
mode如何着色。标准模式为SRC_ATOP。
相关XML属性
android:tint
public voidsetImageBitmap(Bitmap bm)
设置位图作为该ImageView的内容。
参数
bm设置的位图。
public voidsetImageDrawable(Drawable drawable)
设置可绘制对象为该ImageView显示的内容。
参数
drawable设置的可绘制对象。
public voidsetImageLevel(int level)
设置图片的等级,当图片来自于LevelListDrawable时。(译者注:使用参见这里)
参数
level图片的新的等级。
public voidsetImageMatrix(Matrix matrix)
(译者注:矩阵变换)
public voidsetImageResource(int resId)
通过资源ID设置可绘制对象为该ImageView显示的内容。
注意:该操作读取位图,并在UI线程中解码,因此可能导致反应迟缓。如果反应迟缓,可以考虑用setImageDrawable(Drawable)、setImageBitmap(Bitmap)或者BitmapFactory代替。
参数
resId可绘制对象的资源标识。
相关XML属性
android:src
public voidsetImageState(int[] state, boolean merge)
(译者注:设置视图的可见和不可见,使用参见这里)
public voidsetImageURI(Uri uri)
设置指定的URI为该ImageView显示的内容。
注意:该操作读取位图,并在UI线程中解码,因此可能导致反应迟缓。如果反应迟缓,可以考虑用setImageDrawable(Drawable)、setImageBitmap(Bitmap)或者BitmapFactory代替。
参数
uri图像的URI。
public voidsetMaxHeight(int maxHeight)
用于设置该视图支持的最大高度的可选参数。只有setAdjustViewBounds(boolean)为真时有效。要设置图像最大尺寸为100×100,并保持原始比率,做法如下:
1)设置adjustViewBounds为真;
2)设置maxWidth和maxHeight为100;
3)设置宽、高的布局参数为WRAP_CONTENT。
注意,如果原始图像较小,即使设置了该参数,图像仍然要比100×100小。如果要设置图片为固定大小,需要在布局参数中指定大小,并使用setScaleType(ImageView.ScaleType)函数来检测,如何将其调整到适当的大小。
参数
maxHeight该视图的最大高度。
相关XML属性
android:maxHeight
public voidsetMaxWidth(int maxWidth)
用于设置该视图支持的最大宽度的可选参数。只有setAdjustViewBounds(boolean)为真时有效。要设置图像最大尺寸为100×100,并保持原始比率,做法如下:
4)设置adjustViewBounds为真;
5)设置maxWidth和maxHeight为100;
6)设置宽、高的布局参数为WRAP_CONTENT。
注意,如果原始图像较小,即使设置了该参数,图像仍然要比100×100小。如果要设置图片为固定大小,需要在布局参数中指定大小,并使用setScaleType(ImageView.ScaleType)函数来检测,如何将其调整到适当的大小。
参数
maxWidth该视图的最大宽度。
相关XML属性
android:maxWidth
public voidsetScaleType(ImageView.ScaleType scaleType)
控制图像应该如何缩放和移动,以使图像与ImageView一致。
参数
scaleType需要的缩放方式。
相关XML属性
android:scaleType
public voidsetSelected(boolean selected)
改变视图的选中状态。视图有选中和未选中两个状态。注意,选择状态不同于焦点。典型的选中的视图是象ListView和GridView这样的AdapterView中显示的内容;选中的内容会显示为高亮。
参数
selected为真,将视图设为选中状态;否则为假。
受保护方法
protected voiddrawableStateChanged()
在视图状态的变化影响到所显示可绘制对象的状态时调用该方法。
覆盖该方法时,要确保调用了父类的该方法。
protected voidonDraw(Canvas canvas)
实现该方法,用于自己绘制内容。
参数
canvas用于绘制背景的画布。
protected voidonMeasure(int widthMeasureSpec, int heightMeasureSpec)
评估视图及其内容,以决定其宽度和高度.此方法由measure(int, int)调用,子类可以重载以提供更精确、更有效率的衡量其内容尺寸的方法。
约定:覆盖该方法时,必须调用setMeasuredDimension(int, int)方法来保存评估结果的视图的宽度和高度.如果忘记将导致measure(int, int)方法抛出IllegalStateException异常。要有效的利用父类的onMeasure(int, int)方法。
基类测量的是背景的大小,除非MeasureSpec允许超过背景.子类应该重写onMeasure(int, int)方法,以为其内容提供更适合的大小。
如果重写了该方法,子类要确保其高度和宽度大于等于视图的最小高度和宽度.(getSuggestedMinimumHeight()和getSuggestedMinimumWidth())
参数
widthMeasureSpec父视图要求的横向空间大小.该要求由View.MeasureSpec进行了编码处理。
heightMeasureSpec父视图要求的纵向空间大小.该要求由View.MeasureSpec进行了编码处理。
protected booleanonSetAlpha(int alpha)
透明度改变时执行。子类可以使用该方法指定透明度值,然后返回真;在调用onDraw()时,使用该透明度值。如果返回假,则先在不可见的缓存中绘制视图,完成该请求;看起来不错,但是可能相对于在子类中绘制要慢。默认实现返回假。
参数
alpha应用到视图的透明度值(0…255)。
返回值
如果该类可以绘制该阿尔法值返回真。
protected booleansetFrame(int l, int t, int r, int b)
为视图指定大小和位置。该方法有布局调用。
参数
l左侧位置,相对于父容器。
t顶部位置,相对于父容器。
r右侧位置,相对于父容器。
b底部位置,相对于父容器。
返回值
true如果新的大小和位置与之前的不同,返回真。
protected booleanverifyDrawable(Drawable dr)
如果你的视图子类显示自己的可绘制对象,他应该重写此方法并为自己的每个可绘制对象返回真。该函数允许为这些可绘制对象准备动画效果。
重写此方法时,要保证调用其父类的该方法。
参数
dr待校验的可绘制对象.如果是你显示的对象之一,返回真;否则返回调用父类的返回值。
返回值
boolean如果可绘制对象已经显示在视图上了,返回真;否则返回假,不允许动画效果。
补充
文章精选
Android ImageView加边框
Android用ImageView显示本地和网上的图片
imageView动画效果
示例代码
android:tint
<ImageViewandroid:background="@android:color/white"android:src="@drawable/btn_mode_switch_bg"
android:layout_width="wrap_content"android:layout_height="wrap_content">ImageView>
<ImageViewandroid:layout_marginLeft="5dp"android:background="@android:color/white"android:tint="#ffff00"android:src="@drawable/btn_mode_switch_bg"
android:layout_width="wrap_content"android:layout_height="wrap_content">ImageView>
android:cropToPadding
<ImageViewandroid:background="@android:color/white"android:scrollY="-10px"android:cropToPadding="true"android:src="@drawable/btn_mode_switch_bg"
android:layout_width="wrap_content"android:layout_height="wrap_content">ImageView>
<ImageViewandroid:background="@android:color/white"android:scrollY="10px"android:cropToPadding="true"android:src="@drawable/btn_mode_switch_bg"
android:layout_width="wrap_content"android:layout_height="wrap_content">ImageView>
<ImageViewandroid:paddingTop="10px"android:background="@android:color/white"android:scrollY="10px"android:cropToPadding="true"android:src="@drawable/btn_mode_switch_bg"
android:layout_width="wrap_content"android:layout_height="wrap_content">ImageView>
<ImageViewandroid:paddingTop="10px"android:background="@android:color/white"android:scrollY="10px"android:cropToPadding="false"android:src="@drawable/btn_mode_switch_bg"
android:layout_width="wrap_content"android:layout_height="wrap_content">ImageView>