Drawable Resource 详解(一):BitmapDrawable 介绍

本文如下平台同步发布

掘金专栏:https://juejin.im/post/590d781e2f301e006c153dcb

CSDM :http://blog.csdn.net/easyer2012/article/details/71358206

一、Drawable 简介

Drawable 表示的是一种可以在 Canvas 上进行绘制的抽象概念 。它的种类有很多,最常见的颜色和图片都可以是一个Drawable 。在实际开发中,Drawable 常被用来作为 View 的背景使用,Drawable 一般都是通过XML来定义的,当然,我们也可以通过代码来创建具体的Drawable 对象,只是使用代码创建相对来说稍显复杂。

二、Drawable 的分类

Drawable 是一个抽象类,它的子类种类繁多,常见的有 BitmapDrawable、 ShapeDrawable 、LayerDrawable、StateListDrawable 等,这里就不一一列举了,后文会分别介绍他们的详细使用,Drawable 详细继成关系如下:

Drawable 的继成关系

三、BitmapDrawable

Bitmap,代表一个位图图像,BitmapDrawable 它代表的就是一张图片,在开发过程中,我们之间引用原始图片即可,只是BitmapDrawable 可以设置更多的显示效果,它使用 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:tileMode=\["disabled" | "clamp" | "repeat" | "mirror"\] />

各属性的含义:

android:src
表示:这个比较简单就是图片的资源 ID(必填)

android:antialias
表示:是否开启抗锯齿功能,(建议开启)。

android:dither
表示:是否允许开启抖动效果(建议开启)。当位图与屏幕的像素配置不同时,开启这个选项可以让搞资料的图片在低质量的屏幕上还能较好的显示效果。(例如:一个位图的像素设置是 ARGB 8888,但屏幕的设置是RGB 565,如果不开启抖动效果,图片显示就会失真)

android:filter
表示:是否允许对位图进行滤波(建议开启)。对位图进行收缩或者延展使用滤波可以获得平滑的外观效果。

android:gravity
表示:如果位图小于其容器时,设置位图显示的位置(此选项可以同“ | ”来组合使用)。

android:tileMode
表示:平铺模式。开启改功能以后 android:gravity 属性会失效。

  • disabled :表示平铺模式不可用 ( 默认值 )

  • clamp :表示位图周围的像素会扩展到周围区域

  • repeat :表示水平和竖直方向上的铺平效果。

  • mirror :表示水平和竖直方向上的镜面投影效果

android:tileMode 图文分析:

素材文件:texture_item.png

clamp 模式:

<?xml version="1.0" encoding="utf-8"?><bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/texture_item"
    android:tileMode="clamp"
    />

repeat 模式:

<?xml version="1.0" encoding="utf-8"?><bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/texture"
    android:tileMode="repeat"
    />

mirror 模式:(说明:此处采用的是ic_launcher图片作为 src)

<?xml version="1.0" encoding="utf-8"?><bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/ic_launcher"
    android:tileMode="mirror"
    />