Android中给ImageView添加background和src的区别
2017-10-21 19:34
686 查看
Android中给ImageView添加背景资源时,有两种方式可以选择,第一种是使用android:src添加,另一种是使用android.background添加,这两种添加方式虽然都能够起作用,但是在实际的使用效果中还是有些许的区别。
在这里只介绍背景资源为使用xml文件画出的图片加载。
首先我们使用以下xml文件画出一个带边框的方形:
在drawable文件中创建文件focus_style.xml
在这个xml文件中我们画出了一个渐变色块。然后在布局文件中添加一个
但是如果我们在drawable文件中绘制图片的时候使用了相对的位置信息,如下所示:(在上图中添加了两个
这种情况下两种资源加载方式便不尽相同:
使用src加载的效果如下:
使用background加载的效果如下:
两种加载效果并不相同,其中很重要的原因在于(Android版本的原因):
在Android 6及以前的系统中,可以认为
background是作为背景显示的,而src是作为内容填充显示的,可以被认为是前景。
background可以为控件设置图片或者颜色,设置的大小时
如果background设置为颜色值,那么
使用background添加背景资源时,所添加的背景能够充满整个控件的大小,如果当前使用的资源不能够满足控件大小时,将会把当前资源自动进行拉伸以满足添加背景资源的需要。但是在使用src填充是,如果填充的资源没有固定的大小,那么src将会按照自己的方式将整个控件占满,不会考虑多层叠加的效果
以上的结果是在Android6.0的版本上进行编译运行的,但是在Android7.0以上的版本上已经修复了这个bug,因此在7.0以上的版本上无论使用src还是background,都能设置成上图二中这样的多层描边效果。
因此当应用要跨Android版本使用时,要注意这个问题,避免因为设置图片资源出现布局错误的情况。
在这里只介绍背景资源为使用xml文件画出的图片加载。
首先我们使用以下xml文件画出一个带边框的方形:
在drawable文件中创建文件focus_style.xml
<?xml version="1.0" encoding="utf-8"?>` <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <gradient android:endColor="@android:color/holo_blue_dark" android:startColor="@android:color/holo_blue_bright" /> </shape> </item> </layer-list>
在这个xml文件中我们画出了一个渐变色块。然后在布局文件中添加一个
<ImageView>标签,在该标签中使用
android:src与
android:background来加载图片资源的效果是一样的。
但是如果我们在drawable文件中绘制图片的时候使用了相对的位置信息,如下所示:(在上图中添加了两个
item)
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape> <gradient android:endColor="@android:color/holo_blue_dark" android:startColor="@android:color/holo_blue_bright" /> </shape> </item> <item> <shape> <solid android:color="@android:color/transparent"/> <stroke android:width="8dp" android:color="@color/colorAccent"/> </shape> </item> <item android:bottom="8dp" android:left="8dp" android:top="8dp" android:end="8dp"> <shape> <solid android:color="@android:color/transparent"/> <stroke android:width="8dp" android:color="#000"/> </shape> </item> </layer-list>
这种情况下两种资源加载方式便不尽相同:
使用src加载的效果如下:
使用background加载的效果如下:
两种加载效果并不相同,其中很重要的原因在于(Android版本的原因):
在Android 6及以前的系统中,可以认为
background是作为背景显示的,而src是作为内容填充显示的,可以被认为是前景。
background可以为控件设置图片或者颜色,设置的大小时
match_parent或者固定值时,该图片将会被拉伸以填充满整个控件.如果设置成
wrap_content时,则会显示原本的大小.上面的实例中,我们设置了
<ImageView>的长宽,因此该图片将会以填充的方式显示。
如果background设置为颜色值,那么
<ImageView>整个区域都会被该颜色值填充。当
<ImageView>仅仅设置了背景颜色而没有设置src,且宽或者高被设置为wrap_content时,则该View将不会显示。
使用background添加背景资源时,所添加的背景能够充满整个控件的大小,如果当前使用的资源不能够满足控件大小时,将会把当前资源自动进行拉伸以满足添加背景资源的需要。但是在使用src填充是,如果填充的资源没有固定的大小,那么src将会按照自己的方式将整个控件占满,不会考虑多层叠加的效果
以上的结果是在Android6.0的版本上进行编译运行的,但是在Android7.0以上的版本上已经修复了这个bug,因此在7.0以上的版本上无论使用src还是background,都能设置成上图二中这样的多层描边效果。
因此当应用要跨Android版本使用时,要注意这个问题,避免因为设置图片资源出现布局错误的情况。
相关文章推荐
- ImageView的android:scaleType属性和 src、Background之前的区别
- ImageView中android:background和android:src区别
- ImageView的android:scaleType属性和 src、Background之前的区别
- Android自学笔记之ImageView的特殊属性及同为背景属性的src、background区别
- ImageView属性中android:src和android:background有什么区别
- 【android】ImageView的src和background的区别以及两者的妙用
- Android学习之路------ImageView的src和background的区别
- 【android】ImageView的src和background的区别以及两者的妙用
- 【android】ImageView的src和background的区别以及两者的妙用
- android的ImageView中XML属性src和background的区别
- Android中ImageView属性src和background的几点区别
- 【Android 界面效果32】ImageView中XML属性src和background的区别
- ImageView的android:scaleType属性和 src、Background之前的区别
- Android ImageView Src 和Background 区别
- android imageview使用的时候 引用资源src和background的区别
- ImageView---属性android:background与android:src的区别
- Android中ImageView属性src和background的几点区别
- 【Android】ImageView的src和background的区别以及两者的妙用
- Android的ImageView中的android:src和android:background的区别
- android:ImageView中XML属性src和background的区别