结构
继承关系
public class
view.onclicklistner extends
view
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
的大小,应该如何变更图片大小或移动图片。一定是下列常量之一:
常量
值
matrix
用矩阵来绘图
fitxy
1
拉伸图片(不按比例)以填充view的宽高
fitstart
2
按比例拉伸图片,拉伸后图片的高度为view的高度,且显示在view的左边
fitcenter
3
按比例拉伸图片,拉伸后图片的高度为view的高度,且显示在view的中间
fitend
4
按比例拉伸图片,拉伸后图片的高度为view的高度,且显示在view的右边
center
5
按原图大小显示图片,但图片宽高大于view的宽高时,截图图片中间部分显示
centercrop
6
按比例放大原图直至等于某边view的宽高显示。
centerinside
7
当原图宽高或等于view的宽高时,按原图大小居中显示;反之将原图缩放至view的宽高居中显示。
(译者注:设置图片的填充方式。)
android:src
设置可绘制对象作为 imageview
显示的内容
android:tint
为图片设置着色颜色。(译者注:将图片渲染成指定的颜色。见下图:
左边为原图,右边为设置后的效果,见后面代码。)
公共方法
public final void
clearcolorfilter ()
(译者注:清除颜色过滤,参见这里)
public int getbaseline ()
返回部件顶端到文本基线的偏移量。如果小部件不支持基线对齐,该方法返回 -1。
返回值
小部件顶端到文本基线的偏移量;或者是 -1
当小部件不支持基线对齐时。
public boolean getbaselinealignbottom ()
返回当前视图基线是否将考虑视图的底部。
参见
setbaselinealignbottom(boolean)
public drawable getdrawable ()
返回视图的可绘制对象;如果没有关联可绘制对象,返回空。
public matrix getimagematrix ()
返回视图的选项矩阵。当绘制时,应用于视图的可绘制对象。如果没有矩阵,
函数返回空。不要更改这个矩阵。如果你要为可绘制对象设置不同的矩阵, 请调用 setimagematrix()。
public imageview.scaletype getscaletype ()
返回当前 imageview
使用的缩放类型。
相关 xml
属性
android:scaletype
参见
imageview.scaletype
public void invalidatedrawable (drawable dr)
使指定的可绘制对象失效。
参数
dr 要设为失效的可绘制对象。
public void jumpdrawablestocurrentstate ()
调用与视图相关的所有可绘制对象的drawable.jumptocurrentstate()方法。
public int[] oncreatedrawablestate (int extraspace)
为当前视图生成新的 drawable
状态时发生。当视图系统检测到缓存的可绘制对象失效时,调用该方法.你可以使用 getdrawablestate()
方法重新取得当前的状态。
参数
extraspace 如果为非零,该值为你要在返回值的数组中存放的你自己的状态信息的数量。
返回值
返回保存了视图的当前 drawable
状态的数组。
public void setadjustviewbounds (boolean adjustviewbounds)
当你需要在 imageview
调整边框时保持可绘制对象的比例时,将该值设为真。
adjustviewbounds
是否调整边框,以保持可绘制对象的原始比例。
相关 xml
android:adjustviewbounds
public void
setalpha (int alpha)
(译者注:设置透明度)
setbaseline (int baseline)
设置部件顶部边界文本基线的偏移量。这个值覆盖setbaselinealignbottom(boolean)设置的属性值。
baseline
使用的基线,或不提供设置为-1。
相关 xml属性
android:baseline
参见
setbaseline(int)
setbaselinealignbottom (boolean aligned)
设置是否设置视图底部的视图基线。设置这个值覆盖setbaseline()的所有调用。
aligned 如果为true,图像视图将基线与父控件底部边缘对齐。
android:baselinealignbottom
setcolorfilter (int color)
为图片设置着色选项。采用src_atop合成模式。
color 应用的着色颜色。
android:tint
setcolorfilter (colorfilter cf)
为图片应用任意颜色滤镜。
cf 要应用的颜色滤镜(可能为空)
setcolorfilter (int color, porterduff.mode mode)
为图片设置着色选项。
mode 如何着色。标准模式为 src_atop。
public void setimagebitmap (bitmap bm)
设置位图作为该 imageview
的内容。
bm 设置的位图。
public void setimagedrawable (drawable drawable)
设置可绘制对象为该 imageview
显示的内容。
drawable 设置的可绘制对象。
public void setimagelevel (int level)
设置图片的等级,当图片来自于 levellistdrawable
时。(译者注:使用参见这里)
level 图片的新的等级。
setimagematrix (matrix matrix)
(译者注:矩阵变换)
public void setimageresource (int resid)
通过资源id设置可绘制对象为该 imageview
注意:该操作读取位图,并在 ui
线程中解码,因此可能导致反应迟缓。
如果反应迟缓,可以考虑用 setimagedrawable(drawable)、 setimagebitmap(bitmap)
或者 bitmapfactory
代替。
resid 可绘制对象的资源标识。
android:src
public void setimagestate (int[] state, boolean merge)
(译者注:设置视图的可见和不可见,使用参见这里)
public void setimageuri (uri uri)
设置指定的 uri
为该 imageview 显示的内容。
uri 图像的 uri。
setmaxheight (int maxheight)
用于设置该视图支持的最大高度的可选参数。只有 setadjustviewbounds(boolean)
为真时有效。要设置图像最大尺寸为 100×100,并保持原始比率,做法如下:
1)
设置 adjustviewbounds
为真;
2)
设置 maxwidth
和 maxheight 为 100;
3)
设置宽、高的布局参数为 wrap_content。
注意,如果原始图像较小,即使设置了该参数,图像仍然要比 100×100
小。如果要设置图片为 固定大小,需要在布局参数中指定大小,并使用 setscaletype(imageview.scaletype)
函数来检测,如何
将其调整到适当的大小。
maxheight 该视图的最大高度。
android:maxheight
public void setmaxwidth (int maxwidth)
用于设置该视图支持的最大宽度的可选参数。只有 setadjustviewbounds(boolean)
4)
5)
6)
maxwidth 该视图的最大宽度。
android:maxwidth
setscaletype (imageview.scaletype scaletype)
控制图像应该如何缩放和移动,以使图像与 imageview
一致。
scaletype 需要的缩放方式。
android:scaletype
setselected (boolean selected)
改变视图的选中状态。视图有选中和未选中两个状态。注意,选择状态不同于焦点。
典型的选中的视图是象 listview
和 gridview 这样的 adapterview
中显示的 内容;选中的内容会显示为高亮。
selected 为真,将视图设为选中状态;否则为假。
受保护方法
protected void
drawablestatechanged ()
在视图状态的变化影响到所显示可绘制对象的状态时调用该方法。
覆盖该方法时,要确保调用了父类的该方法。
ondraw (canvas canvas)
实现该方法,用于自己绘制内容。
canvas 用于绘制背景的画布。
onmeasure (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 boolean
onsetalpha (int alpha)
透明度改变时执行。子类可以使用该方法指定透明度值,然后返回真;
在调用 ondraw() 时,使用该透明度值。如果返回假,则先在不可见的缓存中绘制视图,
完成该请求;看起来不错,但是可能相对于在子类中绘制要慢。默认实现返回假。
alpha 应用到视图的透明度值 (0…255)。
返回值
如果该类可以绘制该阿尔法值返回真。
setframe (int l, int t, int r, int b)
为视图指定大小和位置。
该方法有布局调用。
l 左侧位置,相对于父容器。
t 顶部位置,相对于父容器。
r 右侧位置,相对于父容器。
b 底部位置,相对于父容器。
true 如果新的大小和位置与之前的不同,返回真。
verifydrawable (drawable dr)
如果你的视图子类显示自己的可绘制对象,他应该重写此方法并为自己的每个可绘制对象返回真。该函数允许为这些可绘制对象准备动画效果。
重写此方法时,要保证调用其父类的该方法。
dr 待校验的可绘制对象.如果是你显示的对象之一,返回真;否则返回调用父类的返回值。
boolean 如果可绘制对象已经显示在视图上了,返回真;否则返回假,不允许动画效果。
补充
文章精选
android imageview 加边框
android用imageview显示本地和网上的图片
imageview动画效果
示例代码
android:tint
<imageview
android:background="@android:color/white"
android:src="@drawable/btn_mode_switch_bg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></imageview>
android:layout_marginleft="5dp"
android:tint="#ffff00"
android:scrolly="-10px"
android:croptopadding="true"
android:scrolly="10px"
android:paddingtop="10px" android:background="@android:color/white"
android:paddingtop="10px"
android:croptopadding="false"
imageview.scaletype
译者署名:小易
译者博客:http://blog.sina.com.cn/xjtuyi
版本:android 3.1 r1
public static final enum
imageview.scaletype extends
enum<e extends enum<e>>
java.lang.enum<e extends java.lang.enum<e>>
android.widget.imageview.scaletype
将图片边界缩放,以适应视图边界时的可选项。
public static final imageview.scaletype
center
在视图中使图像居中,不执行缩放。
在 xml 中可以使用的语法:
android:scaletype="center"。
center_crop
均衡的缩放图像(保持图像原始比例),使图片的两个坐标(宽、高)都大于等于
相应的视图坐标(负的内边距)。图像则位于视图的中央。
在 xml 中可以使用的语法:android:scaletype="centercrop"。
center_inside
均衡的缩放图像(保持图像原始比例),使图片的两个坐标(宽、高)都小于等于
在 xml 中可以使用的语法:android:scaletype="centerinside"。
fit_center
使用 center
方式缩放图像。 在 xml
中可以使用的语法: android:scaletype="fitcenter"。
fit_end
使用 end
中可以使用的语法: android:scaletype="fitend"。
fit_start
使用 start
中可以使用的语法:android:scaletype="fitstart"。
fit_xy
使用 fill
中可以使用的语法: android:scaletype="fitxy"。
绘制时,使用图像矩阵方式缩放。图像矩阵可以通过 setimagematrix(matrix)
设置。在 xml 中可以使用的语法:
android:scaletype="matrix"。