Android ImageView属性

  • Post author:
  • Post category:其他


ImageView继承自View组件,主要功能用来显示图片,实际上它不仅仅可以用来显示图片,任何Drawable对象都可以使用ImageView来显示.ImageView可以适用于任何布局中,并且Android为其提供了缩放和着色的一些操作.



1.foreground src 和background属性的区别

  1. background指的是背景,foreground指的是前景,src指的是内容;三者可以同时使用;
  2. src填入图片时,是按照图片大小直接填充,并不会进行拉伸;而使用background和foreground填入图片,则会根据ImageView的大小进行拉伸
  3. background和foreground是所有view的属性,总是缩放到view大小,不受scaleType影响;而src是ImageView的特有属性,它会受到scaleType的影响

上述三者在使用中,它们的层级比较如下:

foreground>src>background



2. adjustViewBounds属性用法

ImageView为我们提供了adjustViewBounds属性,用于设置缩放时是否保持原图长宽比



3. 设置透明度

imageView设置透明度主要有以下几种方法:

  • android:alpha //0f-1f
  • setAlpha(Float alpha)//0f-1f
  • setImageAlpha(int alpha);//API>=16;0-255



4. 设置图片的方式



1) 设置前景



foreground

xml布局中:

android:foreground="@color/blue"
android:foreground="@mipmap/ic_launcher"
android:src="@mipmap/ic_launcher"

java代码中:

//设置前景图
image.setForeground(getResources().getDrawable(R.mipmap.ic_launcher));
//设置前景色
image.setForeground(getResources().getDrawable(R.color.blue));


注意


关于设置foreground无效问题,View源码片段:

case R.styleable.View_foregroumd
	if(targetSdkVersion>=24||this instanceof FrameLayout){
		setForeground(a.getDrawable(attr))
	}
	break;



2) src

xml布局中:

android:src="@mipmap/ic_launcher"

java代码中:

//1. setImageDrawable(Drawable drawable)
image.setImageDrawable(getResources().getDrawable(R.drawable.ic_launcher));//不会变形
//2. setImageBitmap(Bitmap bitmap)
stringPath = Environment.getExternalStorageDirectory()+"/test.jpg";
Bitmap bitmap = BitmapFactory.decodeFile(path);
image.setImageBitmap(bitmap);//不会变形
//3. setImageResource(int resId)
image.setImageResource(R.drawable/ic_launcher);//不会变形



3) 设置背景

xml布局中;

android:background="@mipmap/ic_launcher"
android:background="@color/blue"

java代码中:

//1. setBackground(Drawable background)
image.setBackground(getResouces().getDrawable(R.drawable.ic_launcher));
//2. setBackgroundResource(int resId)
image.setBackgroundResource(R.drawable.ic_launcher);//变形
//3. setBackgroundDrawable(Drawable background)
image.setBackground(getResouces().getDrawable(R.drawable.ic_launcher));

//setBackgroundColor(int color)
image.setBackgroundColor(getResources().getColor(R.color.blue));



ScaleType属性

android:scaleType用于设置显示的图片如何缩放或者移动以适应ImageView的大小,Java代码中可以通过imageView.setScaleType(ImageView.ScaleType.CENTER);来设置.可选值如下:


  • MATRIX/matrix:

    用矩阵的方式绘制,从ImageView的左上角开始绘制原图,不缩放图片,超过ImageView部分作裁剪处理;

  • CENTER/center:

    保持原图的大小,显示在ImageView的中心,当当尺寸大于ImageView的尺寸,超过部分裁剪处理
  • **CENTER_CROP/centerCrop: ** 保持纵横比缩放图片,直到完全覆盖ImageView为止(指的是ImageView的宽和高都要填满),超过的部分作裁剪处理;
  • **CENTER_INSIDE/centerInside: ** 将图片的内容完整居中显示,通过按比例缩小原尺寸的宽高等于或小于ImageView的宽高.如果原图的尺寸本身就小于ImageView的尺寸,则原图像的尺寸不作任何处理,居中显示在ImageView
  • **FIT_XY/fitXY: ** 把原图宽高进行不保持原比例放缩,直到填充满ImageView为止
  • **FIT_START/fitStart: ** 把原图按比例放缩使之等于ImageView的宽高使之居中显示,缩放后放于ImageView的左上角;
  • **FIT_CENTER/fitCenter: ** 把原图按比例放缩使之等于ImageView的宽高使之居中显示,缩放后放于中间;
  • **FIT_END/fitEnd: ** 把原图按比例放缩使之等于ImageView的宽高使之居中显示,缩放后放于ImageView的右下角;

    在这里插入图片描述



版权声明:本文为ZD688原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。