天天看点

ImageView 用法总结

结构

继承关系

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一起使用,效果如下,实现代码见代码部分:

ImageView 用法总结

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的宽高

ImageView 用法总结

fitstart

2

按比例拉伸图片,拉伸后图片的高度为view的高度,且显示在view的左边

ImageView 用法总结

fitcenter

3

按比例拉伸图片,拉伸后图片的高度为view的高度,且显示在view的中间

ImageView 用法总结

fitend

4

按比例拉伸图片,拉伸后图片的高度为view的高度,且显示在view的右边

ImageView 用法总结

center

5

按原图大小显示图片,但图片宽高大于view的宽高时,截图图片中间部分显示

ImageView 用法总结

centercrop

6

按比例放大原图直至等于某边view的宽高显示。

ImageView 用法总结

centerinside

7

当原图宽高或等于view的宽高时,按原图大小居中显示;反之将原图缩放至view的宽高居中显示。

ImageView 用法总结

(译者注:设置图片的填充方式。)

android:src

设置可绘制对象作为 imageview

显示的内容

android:tint

为图片设置着色颜色。(译者注:将图片渲染成指定的颜色。见下图:

ImageView 用法总结

左边为原图,右边为设置后的效果,见后面代码。)

公共方法

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"。 

继续阅读