zoukankan      html  css  js  c++  java
  • 【Android开发艺术探索】Drawable

    个人博客:
    http://www.milovetingting.cn

    Drawable表示的是一种可以在Canvas上进行绘制的抽象的概念。

    1、Drawable简介

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

    通过getIntrinsicWidth和getIntrinsicHeight这两个方法可以获取到Drawable的内部宽/高。但并不是所有的Drawable都有内部宽/高,比如一张图片所形成的Drawable,它的内部宽/高就是图片的宽/高,但是一个颜色形成的Drawable,它没有内部宽/高。Drawable内部宽/高不等同于它的大小。Drawable是没有大小概念的。

    2、Drawable分类

    • BitmapDrawable

    • ShapeDrawable

    • LayerDrawable

    对应的XML标签是,表示一种层次化的Drawable集合。

    • StateListDrawable

    对应于标签,也是表示Drawable集合,每个Drawable都对应View的一种状态。主要用于设置可单击的View的背景。

    系统会根据View当前的状态从selector中选择对应的item,每个item对应着一个具体的Drawable,系统按照从上到下的顺序查找,直至查找到第一条匹配的item。一般来说,默认的item都应该放在selector的最后一条并且不带任何状态,这样当上面的item无法匹配View的当前状态,系统会选择默认的item。

    • LevelListDrawable

    对应于标签,表示一个Drawable集合,集合中的每个Drawable都有一个等级level的概念。根据不同的等级,LevelListDrawable会切换为对应的Drawable。Drawable等级是有范围的,即0-10000,最小等级为0,这也是默认值,最大等级为10000。

    • TransitionDrawable

    对应于标签,用于实现两个Drawable之间的淡入淡出效果。

    • InsetDrawable

    对应于标签,它可以将其它Drawable内嵌到自己当中,并可以在四周留出一定的间距。当一个View希望自己的背景比自己的实际区域小的时候,可以采用InsetDrawable来实现。通过LayerDrawable也可以实现这种效果。

    • ScaleDrawable

    ScaleDrawable对应于标签,可以根据自己的等级将指定的Drawable缩放到一定比例。等级为0表示ScaleDrawable不可见,这是默认值,要想ScaleDrawable可见,需要等级不为0。

    • ClipDrawable

    对应于标签,可以根据自己当前的等级来裁剪另一个Drawable,裁剪方向可以通过android:clipOrientation和android:gravity这两个属性来共同控制。

    3、自定义Drawable

  • 相关阅读:
    端接介绍及其种类
    特邀美国EMC实战专家Mark来华授课
    最简单的方式来理解阻抗、反射和端接
    如何用TDR来测试PCB板的线路阻抗
    TDR分辨率
    TDR测试原理
    长沙研讨会3月24日约您亲临现场
    如何计算阻抗(下)
    如何计算阻抗(上)
    为什么PCB上的单端阻抗控制50欧姆
  • 原文地址:https://www.cnblogs.com/milovetingting/p/10436834.html
Copyright © 2011-2022 走看看