Android的Drawable

Android开发艺术探索读书笔记系列

Drawable是一个抽象类,它有众多子类如ShapeDrawable BitmapDrawable等. 它有一个重要的参数是内部宽高,通过getIntrinsicWidthgetIntrinsicHeight获取! 内部大小不等于它的大小,一般来说Drawable没有大小,当其作为View的背景时,Drawable会被拉伸至View的同等大小!

Drawable的分类及层次关系
这里写图片描述
BitmapDrawable
它表示一张图片,实际开发中可以直接引用图片,也可以通过XML的方式描述,这种方式可以实现更多效果,它有众多属性:
- android:src 图片资源id
- android:antialias 是否开启抗锯齿
- android:dither 是否开启抖动效果
- android:filter 是否开启过滤效果
- android:mipMap 纹理映射
- android:tileMode 平铺模式

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/ic_test"
    android:antialias="true"
    android:dither="true"
    android:filter="true"
    android:gravity="center"
    android:tileMode="mirror"
   />

NinePatchDrawable
NinePatchDrawable表示一张.9格式的图片,各属性和BitmapDrawable一样!

ShapeDrawable
ShapeDrawable可以理解为一种用颜色来构造的图形, 语法比较复杂,其子节点有corners、gradient、padding、size、solid、stroke, 它有一个属性shape有四个选项:rectangle(矩形)、oval(椭圆)、line(线)、ring(圆环), 默认是矩形,当其值是line或ring时必须要有子节点stroke来指定线的宽度和颜色,否则无效!

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:innerRadius="100dp"
    android:shape="ring"
    android:antialias="true"
    android:useLevel="false">

    <!--设置渐变色和solid不能共存-->
    <gradient
        android:endColor="@color/colorPrimary"
        android:centerColor="#000"
        android:type="sweep"
        android:startColor="#fff" />
    <size
        android:width="300dp"
        android:height="300dp" />
    <
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值