zoukankan      html  css  js  c++  java
  • 第六章:Android的Drawable

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

      6.1 Drawable简介

          Drawable常被用来作为View的背景使用.

          Drawable一般都是通过XML来定义的.

          Drawable是一个抽象类,它是所有Drawable对象的基类,每个具体的Drawable都是它的子类.

          Drawable的内部宽/高这个参数比较重要,通过getIntrinsicWidth和getIntrinsicHeight这两个方法可以获取到它们.

      6.2 Drawable的分类

          6.2.1 BitmapDrawable

            表示的就是一张照片<bitmap/>

          6.2.2 ShapeDrawable

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

            <shape>标签,子属性android:shape="四个选项,rectangle,oval,line,ring"

            子标签

              <coners>,只适用于矩形shape,这里的角度指圆角的程度,用px表示.

              <gradient>,与<solid>标签互斥,其中solid表示纯色填充,二gradient则表示渐变效果

              <solid>,纯色填充,通过android:color即可指定shape中填充的颜色

              <stroke>,Shape的描边

              <padding>,表示空白,但是它表示的不是shape的空白,而是包含它的View的空白

              <size>,shape 的大小

          6.2.3 LayerDrawable

              对应的XML标签是<layer-list>,它表示一种层次化的Drawable集合,通过将不同的Drawable纺织在不同的层上面从而达到一种叠加后的效果.

              一个layer-list中可以包含多个item,每个item表示一个Drawable

          6.2.4 StateListDrawable

              对应的XML标签是<selector>,也是表示Drawable集合,每个Drawable都对应着View的一种状态.

              常见状态:android:state_pressed/state_focused/state_selected/state_checked/state_enabled.

          6.2.5 LevelListDrawable

              对应的XML标签是<level-list>,每个Drawable都有一个等级(levle)的概念.

              根据不同的等级,LevelListDrawable会切换为对应的Drawable

          6.2.6 TransitionDrawable

              对应的XML标签是<transition>,它用于实现两个Drawable之间的淡入淡出效果

          6.2.7 InsetDrawable

              对应的XML标签是<inset>,它可以将其他Drawable内嵌到自己当中,并可以在四周留出一定的间隔.

          6.2.8 ScaleDrawable

               对应的XML标签是<scale>,它可以根据自己的等级(level)将指定的Drawable缩放到一定的比例

          6.2.9 ClipDrawable

              对应的XML标签是<clip>,他可以根据自己当前的等级(level)来裁减另一个Drawable.

        6.3 自定义Drawable

          Drawable的工作原理简单,其核心就是draw方法.

          系统会调用Drawable的draw方法来绘制view的背景,可以通过重写Drawable的draw方法来自定义Drawable

          draw,setAlpha,setColorFilter和getOpacity是必须重载实现的方法.

          

  • 相关阅读:
    VMware虚拟机安装
    代码搜索的终极武器Ag
    模糊搜索神器fzf
    Python:json、xml、字典各种转换
    03-azkaban安装部署
    linux下环境变量PATH设置错误的补救
    01-编译azkaban
    VMware安装CentOS7
    PS(二)
    等待公交车的时间
  • 原文地址:https://www.cnblogs.com/JingQ/p/6184321.html
Copyright © 2011-2022 走看看