Drawable Resource 之旅(一):BitmapDrawable 详解

一、Drawable 简介

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

二、Drawable 的分类

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

Drawable 的继成关系

三、BitmapDrawable

Bitmap,代表一个位图图像,BitmapDrawable 它代表的就是一张图片,在开发过程中,我们之间引用原始图片即可,只是BitmapDrawable 可以设置更多的显示效果,BitmapDrawable 对应< bitmap > 标签,使用 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
表示:是否开启抗锯齿功能( 默认值 true)(建议开启)。

android:dither
表示:是否允许开启抖动效果( 默认值 true)(建议开启)。当位图与屏幕的像素配置不同时,开启这个选项可以让搞资料的图片在低质量的屏幕上还能较好的显示效果。(例如:一个位图的像素设置是 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"
    />复制代码

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"
    />复制代码

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"
    />复制代码

mirror 模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值