Android的image

ImageView继承View,主要用于显示图片,实际上除了用来显示图片,任何Drawable对象都可以使用ImageView来显示。

Drawable参考https://www.runoob.com/w3cnote/android-tutorial-drawable1.html 

1. ImageView有三个可以设置图片的属性,分别是:src, foreground, background

在xml中设置

android:foreground="@drawable/xxx"     // 或者 "#0000ff"
android:src="@drawable/xxx"     // 或者 "#0000ff"
android:background="@drawable/xxx"     // 或者 "#0000ff"

① background: 指的是背景;foreground指的是前景;src指的是内容;三者可以同时使用;

注意:三者同时使用时,foreground在最上面显示,src在中间,background在最下面,所以同时设置时显示的是foreground设置的内容

② src填入图片时,是按照图片大小直接填充,并不会进行拉伸;而使用background和foreground填入图片,则是会根据ImageView给定的宽度来进行拉伸;

③ background和foreground是所有view都有的属性,总是缩放到view的大小,不受scaleType影响;而src是ImageView特有属性,它会受到scaleType的影响。

2.设置前景:可以在View.java中查看源码

// 设置前景图/颜色
image.setForeground(Drawable drawable); 

3.设置src:可以在ImageView.java中查看源码

1. setImageDrawable(Drawable drawable) //对应src属性,首先是根据该属性值获取Drawable,再调用该函数
/*
setImageDrawable是最省内存高效的
*/

2. setImageBitmap(Bitmap bm)
/*
该函数把Bitmap对象封装成Drawable对象,然后调用setImageDrawable设置图片。如果需要频繁调用这个方法,最好自己封装个固定的Drawable对象,直接调用setImageDrawable,这样可以减少Drawable对象的创建。
*/

3. setImageResource(int resId)
/*
setImageResource的参数是resId,必须是drawable目录下的资源,它是在UI线程中对图片读取和解析的,所以可能对Activity的启动造成延迟。官方建议用setImageDrawable和setImageBitmap来代替。
*/

4.设置背景:可以在View.java中查看源码

1.setBackground(Drawable background) // 对应background属性,首先是根据resid获取Drawable,再调用该函数
2.setBackgroundResource(int resid) // 传入0时表示清除背景图片
3.setBackgroundDrawable(Drawable background)
4.setBackgroundColor(int color)

5.获取Drawable对象:

1.如果是通过src属性设置的图片(或src相关的java接口,参考3),获取Drawable对象的方法为

Drawable drawable = image.getDrawable();  // image为ImageView对象
// 如果是.9图片,获取的是NiewPatchDrawable
// 不是.9图片,获取的是BitmapDrawable,根据它可以获得Bitmap图片
Bitmap b = ((BitmapDrawable) drawable).getBitmap();

2.如果是通过background设置的图片,获取Drawable对象的方法为

Drawable drawable = image.getBackground(); // 获取的是ColorDrawable

参考:
https://www.runoob.com/w3cnote/android-tutorial-imageview.html

Android的image

上一篇:fastclick解决移动端300ms的延迟


下一篇:iOS界面横屏竖屏随意切换