标签:设置 获得 ack strip 完全 组件 填充 mes ken
ImageView 继承自View组件,主要功能是用于显示图片,实际上它不仅仅可以用来显示图片,任何Drawable对象都可以使用ImageView来显示。ImageView可以适用于任何布局中,并且Android为其提供了缩放和着色的一些操作。
1)background
指的是背景,foreground
指的是前景,而src
指的是内容;三者可以同时使用;
2)src
填入图片时,是按照图片大小直接填充,并不会进行拉伸;而使用background
和foreground
填入图片,则是会根据ImageView给定的宽度来进行拉伸;
3)background
和foreground
是所有view都有的属性,总是缩放到view的大小,不受scaleType
影响;而src
是ImageView特有属性,它会受到scaleType
的影响。
举个栗子:
<ImageView
android:layout_width="260dp"
android:layout_height="260dp"
android:foreground="#99000000"
android:background="#ff0000"
android:src="@mipmap/ic_launcher"/>
效果图:
从图上可以看出,虽然foreground
和src
都为前景,但是foreground
却在src
之上。从层级上比较:foreground
>src
>background
ImageView为我们提供了adjustViewBounds
属性,用于设置缩放时是否保持原图长宽比。 adjustViewBounds
详细介绍,请移驾 —— 《Android辟谣篇 —— ImageView宽高自适应》
ImageView 设置透明度主要有以下几种方法:
android:alpha // 0f~1f
setAlpha(float alpha); // 0f~1f
setAlpha(int alpha); // 0~255,已过时
setImageAlpha(int alpha); // API>=16
1)设置前景
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_foreground:
if (targetSdkVersion >= VERSION_CODES.M || this instanceof FrameLayout) {
setForeground(a.getDrawable(attr));
}
break;
foreground
属性只有在以下两种情况下生效:
(1) Android M版本(6.0)及以上 ;
(2) FrameLayout本身及其子类。
xml布局中:
android:src="@mipmap/ic_launcher"
Java代码中:
// 1. setImageDrawable(Drawable drawable)
image.setImageDrawable(getResources().getDrawable(R.drawable.ic_launcher)); //不会变形
// 2. setImageBitmap(Bitmap bm)
Stringpath=Environment.getExternalStorageDirectory()+File.separator+”test.jpg”;
Bitmap bm = BitmapFactory.decodeFile(path);
image.setImageBitmap(bm);//不会变形
// 3. setImageResource(int resId)
image.setImageResource(R.drawable.ic_launcher);//不会变形
2)设置背景
xml布局中:
android:background="@mipmap/ic_launcher"
android:background="@color/blue"
Java代码中:
// 1. setBackground(Drawable background)
image.setBackground(getResources().getDrawable(R.drawable.ic_launcher));//变形
// 2. setBackgroundResource(int resid)
image.setBackgroundResource(R.drawable.ic_launcher);//变形
// 3. setBackgroundDrawable(Drawable background)
image.setBackgroundDrawable(getResources().getDrawable(R.drawable.ic_launcher));//变形
// setBackgroundColor(int color)
image.setBackgroundColor(getResources().getColor(R.color.blue));
android:scaleType
用于设置显示的图片如何缩放或者移动以适应ImageView的大小,Java代码中可以通过imageView.setScaleType(ImageView.ScaleType.CENTER);
来设置。 可选值如下:
标签:设置 获得 ack strip 完全 组件 填充 mes ken
原文地址:https://www.cnblogs.com/Alex80/p/11875751.html