企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
#### 6.2.1 BitmapDrawable 这几乎是最简单的Drawable了,它表示的就是一张图片。在实际开发中,我们可以直接引用原始的图片即可,但是也可以通过XML的方式来描述它,通过XML来描述的BitmapDrawable可以设置更多的效果,如下所示: <? 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"] /> 下面是它各个属性的含义。 * android:src 这个很简单,就是图片的资源id。 * android:antialias * 是否开启图片抗锯齿功能。开启后会让图片变得平滑,同时也会在一定程度上降低图片的清晰度,但是这个降低的幅度较低以至于可以忽略,因此抗锯齿选项应该开启。 * android:dither 是否开启抖动效果。当图片的像素配置和手机屏幕的像素配置不一致时,开启这个选项可以让高质量的图片在低质量的屏幕上还能保持较好的显示效果,比如图片的色彩模式为ARGB8888,但是设备屏幕所支持的色彩模式为RGB555,这个时候开启抖动选项可以让图片显示不会过于失真。在Android中创建的Bitmap一般会选用ARGB8888这个模式,即ARGB四个通道各占8位,在这种色彩模式下,一个像素所占的大小为4个字节,一个像素的位数总和越高,图像也就越逼真。根据分析,抖动效果也应该开启。 * android:filter 是否开启过滤效果。当图片尺寸被拉伸或者压缩时,开启过滤效果可以保持较好的显示效果,因此此选项也应该开启。 * android:gravity 当图片小于容器的尺寸时,设置此选项可以对图片进行定位。这个属性的可选项比较多,不同的选项可以通过“|”来组合使用,如表6-1所示。 :-: 表6-1 gravity属性的可选项 ![](https://img.kancloud.cn/b2/54/b25434c71ef2aa71f536787514818b47_1351x614.png) * android:mipMap 这是一种图像相关的处理技术,也叫纹理映射,比较抽象,这里也不对其深究了,默认值为false,在日常开发中此选项不常用。 * android:tileMode 平铺模式。这个选项有如下几个值:["disabled" | "clamp" | "repeat" | "mirror"],其中disable表示关闭平铺模式,这也是默认值,当开启平铺模式后,gravity属性会被忽略。这里主要说一下repeat、mirror和clamp的区别,这三者都表示平铺模式,但是它们的表现却有很大不同。repeat表示的是简单的水平和竖直方向上的平铺效果;mirror表示一种在水平和竖直方向上的镜面投影效果;而clamp表示的效果就更加奇特,图片四周的像素会扩展到周围区域。下面我们看一下这三者的实际效果,通过实际效果可以更好地理解不同的平铺模式的区别,如图6-2所示。 :-: ![](https://img.kancloud.cn/d0/d2/d0d2bf1db671cdf14ee82ec031356acb_1359x512.png) 图6-2 平铺模式下的图片显示效果 接下来介绍NinePatchDrawable,它表示的是一张.9格式的图片,.9图片可以自动地根据所需的宽/高进行相应的缩放并保证不失真,之所以把它和BitmapDrawable放在一起介绍是因为它们都表示一张图片。和BitmapDrawable一样,在实际使用中直接引用图片即可,但是也可以通过XML来描述.9图,如下所示。 <? xml version="1.0" encoding="utf-8"? > <nine-patch xmlns:android="http://schemas.android.com/apk/res/android" android:src="@[package:]drawable/drawable_resource" android:dither=["true" | "false"] /> 上述XML中的属性的含义和BitmapDrawable中的对应属性的含义是相同的,这里就不再描述了,另外,在实际使用中发现在bitmap标签中也可以使用.9图,即BitmapDrawable也可以代表一个.9格式的图片。