Android 开发艺术探索笔记之六 -- Android 的 Drawable

整理一下,基本只作为 知识清单 使用

学习内容:

  • Drawable 的层次关系
  • Drawable 分类
  • 自定义 Drawable 的相关知识

Drawable 简介

Drawable 表示的是一种可以在 canvas 上进行绘制的图像的 抽象概念。实际开发中,Drawable 常被用来作为 View 的背景使用。

优点:

  1. 使用简单,比自定义 View 的成本低
  2. 非图片类型的 Drawable 占用空间较小,有利于减小 apk 的大小。

层次关系:

  1. Drawable 是一个抽象类,是所有 Drawable 对象的基类。
  2. 每个具体的 Drawable 都是它的子类,比如 ShapeDrawable,BitmapDrawable 等。

Drawable 内部宽 / 高

  1. 通过 getIntrinsicWidth 和 getIntrinsicHeight 两个方法获取。
  2. 并非所有 Drawable 都有内部宽/高(图片形成的 Drawable 内部宽/高等同于图片的宽/高,颜色形成的 Drawable 没有内部宽/高的概念)
  3. Drawable 的内部宽/高不等同于它的大小,一般来说,Drawable 没有大小概念,当作为 View 背景时,会被拉甚至 View 的同等大小。

Drawable 分类

1.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:mipMap=["true"|"false"]
    android:tileMode=["disabled"|"clamp"|"repeat"|"mirror"]></bitmap>

属性说明:

  1. android:src:图片的资源 ID
  2. android:antialias:抗锯齿,牺牲清晰度使图片平滑。建议开启
  3. android:dither:抖动效果,当图片像素配置和手机屏幕的像素配置不一致时,开启此选项可以让高质量图片在低质量屏幕上还能保持较好的小时效果。建议开启
  4. android:filter:过滤效果,图片拉伸或压缩时,开启此选项可以保持较好的显示效果。建立开启
  5. android:gravity:当图片小于容器的尺寸时,设置此选项对图片进行定位,多个属性值可以通过 “|” 来组合使用
  6. android:mipMap:纹理映射,默认值为 false,日常开发中不涉及此项
  7. android:tileMode:平铺模式,默认为 disabled,关闭平铺模式;clamp 表示图片四周的像素扩散到周围区域;repeat 表示简单的水平和垂直方向上的平铺效果;mirror 表示一种水平和竖直方向上的镜面投影效果;另外需要注意,当开启平铺模式后, gravity 属性将被忽略。

2.ShapeDrawable

可以理解为通过颜色来构造的图形,既可以是纯色的图形,也可以是具有渐变效果的图形。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape=["rectangle"|"oval"|"line"|"ring"]>
    <corners
        android:bottomLeftRadius="integer"
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值