Drawable资源——BitmapDrawable
1,认识
BitmapDrawable几乎是最简单的Drawable,它表示一张图片。
在实际的开发中我们可以直接引用原始的图片,也可以通过XML的方式来描述它,
语法
<?xml version="1.0" encoding="utf-8"?>
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@[package:]drawable/drawable_resource"
android:antialias=["true" | "false"]
android:dither=["true" | "false"]
android:filter=["true" | "false"]
android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
"fill_vertical" | "center_horizontal" | "fill_horizontal" |
"center" | "fill" | "clip_vertical" | "clip_horizontal"]
android:mipMap=["true" | "false"]
android:tileMode=["disabled" | "clamp" | "repeat" | "mirror"] />
2,bitmap 属性
android:src="@[package:]drawable/ok"图片的资源的id
android:antialias=["true" | "false"]是否开启图片抗锯齿功能。开启后会让图片变得平滑,同时也会在一定程度上降低图片的清晰度。这个降低的幅度较低以至于可以忽略,因此抗锯齿选项应该开启。
android:dither=["true" | "false"]是否开启抖动效果。当图片的像素配置和手机屏幕的像素配置不一致时,开启这个选项可以让高质量的图片在低质量的屏幕上还能保持较好的显示效果,比如图片的色彩模式为ARGB8888,但是设备屏幕所支持的色彩模式为RGB555,这个时候开启抖动选项可以让图片显示不会过于失真。在Android中创建的Bitmap一般会选用ARGB8888这个模式,则ARGB四个通道各占8位,在这种色彩模式下,一个像素所占的大小为4个字节,一个像素的位数总和越高,图像也就越逼真。根据分析,抖动效果也应该开启。
android:filter=["true" | "false"]是否开启过滤效果。当图片尺寸被拉伸或者压缩时,开启过滤效果可以保持较好的显示效果,因此该选项也应该开启。
android:gravity=["top" | "bottom" | "left" | "right"|"center_vertical" | "fill_vertical" | "center_horizontal"|"fill_horizontal" | "center" | "fill" | "clip_vertical"|"clip_horizontal"]当图片小于容器尺寸时,设置此选项可以对图片进行定位。属性值:top 将图片放在容器的顶部。不改变图片的大小bottom 将图片放在容器的底部。不改变图片的大小left 将图片放在容器的左部。不改变图片的大小right 将图片放在容器的右部。不改变图片的大小center_vertical 使图片竖直居中,不改变图片的大小fill_vertical 图片竖直方向填充容器center_horizontal 使图片水平居中,不改变图片的大小fill_horizontal 图片水平方向填充容器center 是图片在水平方向和竖直方向同时居中,不改变图片的大小fill 图片在水平和竖直方向均填充容器,这是默认值clip_vertical 附加选项,表示竖直方向的裁剪,较少使用clip_horizontal 附加选项,表示水平方向的裁剪,较少使用
android:mipMap=["true" | "false"]这是一种图像相关的处理技术,也叫纹理映射,比较抽象,默认为false,在日常开发中此选项不常用
android:tileMode=["disabled" | "clamp" | "repeat" | "mirror"]平铺模式。disable表示关闭平铺模式,这是默认值。当开启平铺后,gtavity属性挥别忽略。repeat 简单的水平和竖直方向上的平铺效果mirror 在水平和竖直方向上的镜面投影效果clamp 图片四周的像素会扩展到周围区域
3,代码示例:
(1)bitmap_drawable_useing1.xml<?xml version="1.0" encoding="utf-8"?><bitmap xmlns:android="http://schemas.android.com/apk/res/android"android:antialias="true"android:dither="true"android:filter="true"android:gravity="center"android:src="@drawable/icon"android:mipMap="false"android:tileMode="disabled" ></bitmap>
(2)bitmap_drawable_useing2.xml<?xml version="1.0" encoding="utf-8"?><bitmap xmlns:android="http://schemas.android.com/apk/res/android"android:antialias="true"android:dither="true"android:filter="true"android:gravity="center"android:src="@drawable/icon"android:mipMap="false"android:tileMode="clamp" ></bitmap>
(3)bitmap_drawable_useing3.xml<?xml version="1.0" encoding="utf-8"?><bitmap xmlns:android="http://schemas.android.com/apk/res/android"android:antialias="true"android:dither="true"android:filter="true"android:gravity="center"android:src="@drawable/icon"android:mipMap="false"android:tileMode="repeat" ></bitmap>
(4)bitmap_drawable_useing4.xml<?xml version="1.0" encoding="utf-8"?><bitmap xmlns:android="http://schemas.android.com/apk/res/android"android:antialias="true"android:dither="true"android:filter="true"android:gravity="center"android:src="@drawable/icon"android:mipMap="false"android:tileMode="mirror" ></bitmap>