第六章: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是必须重载实现的方法.

      

时间: 2024-12-24 22:06:43

第六章:Android的Drawable的相关文章

第六章 Android应用的生命周期

=========================第六章=========================应用程序的生命周期: Android系统决定一个进程生命周期的主要因素包括: 1.系统当前剩余多少可用内存--内存不足时,杀死一些进程释放内存 2.该进程对于用户的重要性--优先杀死对用户不重要的进程 1.前台进程---运行在前台,可与用户直接交互的进程 2.可见进程---用户可见,暂时被遮挡,暂时不能与用户交互的进程 3.服务进程---在后台启动了Service的进程 4.后台进程---为

《android深入探索》第六章心得

看了本书第六章,我学到了: linux系统下每个驱动都映射成一个文件(设备文件/驱动文件),都保存在/dev目录下.回掉函数的功能是使linux驱动能响应应用程序,使设备文件和应用程序交互的接口. 编写linux驱动程序(大体框架): ①   装载驱动:module_init()   卸载驱动:module_exit() ②   注册设备文件:misc_register()  注销设备文件:misc_deregister() ③   指定与驱动相关信息:MODULE_AUTHOR.MODULE_

Android深度探索HAL与驱动开发-——第六章

第六章主要介绍了Android环境下java编写接口程序.包括了led接口.串口.ZigBee和驱动.wi-fi接口.播放器等等.   (1)LED驱动电路:GPIO接口.端口组GPJ3包含六个控制寄存器:控制寄存器.上拉寄存器.数据寄存器.LED字符设备实现的函数有open.release.read.write.ioctl.在测试中make进行编译得到led.ko文件使用insmod指令加载.    LED界面设计:新建工程.添加图片资源.编译main.XML文件进行UI设计.导入代码.添加J

Android深度探索HAL与驱动开发 第六章

第六章 本章是android底层开发的第一个章节,本章是第一个linux驱动程序,统计单词个数. 本章作为实战第一章,首先要做的就是了解linux驱动到底是个什么东西,首先了解linux驱动的工作方式,linux系统将每一个驱动都映射成一个文件,保存在/dev中,再使用c语言函数ioctl向驱动的设备文件发送打印命令.编写linux驱动程序,需要接受被写入的数据,并将它们通过pc的并口.usb等端口发送给打印机, 需要linux响应应用程序传过来的数据. 然后编写linux驱动程序的步骤,步骤如

Android深度探索——第六章读书笔记及心得

单词个数统计程序 ——第六章读书笔记及心得 通过本章的学习,学会了使用多种平台测试linux驱动开发.学会了统计单词个数的程序,通过该程序知道了该算法的实现技术为linux驱动,因为该程序的单词是封装在linux驱动中的.在此之前还对linux有了深入的了解.知道了linux驱动程序编写的步骤.了解到了一些重要的函数.学会了注册和注销设备文件.学会了制定回调函数.知道了如何在eclipse中开发和测试linux驱动程序. Linux系统将每一个驱动都映射为一个文件,称为设备文件或驱动文件,都保存

Android深度探索(卷1)HAL与驱动开发 第六章 第一个Linux驱动程序:统计单词个数

Android深度探索(卷1)HAL与驱动开发 第六章 第一个Linux驱动程序:统计单词个数 统计单词个数的功能是封装在Linux驱动中的. Linux驱动的工作和访问方式是Linux亮点之一,同时受到了业界大防范好评.Linux系统将每一个驱动都映射成一个文件.这些文件称为设备文件或者驱动文件,都保存在 /dev 目录中.这种设计理念使得与Linux驱动进行交互就像与普通文件进行交互一样容易.当然,也比访问Linux API 更容易.由于大多数Linux驱动都有与其对应的设备文件,因此与Li

Android深度探索(卷一)HAL与驱动开发 第六章

通过学习Android深度探索(卷一)HAL与驱动开发的第六章让我了解了统计单词个数的Linux驱动程序开发和测试的完整过程. Linux系统将每一个驱动都映射成一个文件,这些文件被称为设备文件或驱动文件,都保存在/dev目录中.由于大多数Linux驱动都有与其对应的设备文件,因此与Linux驱动交换数据就变成了与设备文件交换数据. 编写Linux驱动程序的步骤:第一步,建立Linux驱动骨架(装载和卸载Linux驱动):第二步,注册和注销设备文件:第三步,指定与驱动相关的信息:第四步,指定回调

Android的学习第六章(布局一LinearLayout)

今天我们来说一下Android五大布局-LinearLayout布局(线性布局) 含义:线性布局,顾名思义,指的是整个Android布局中的控件摆放方式是以线性的方式摆放的, 主要作用:主要对整个界面进行基本设置使用 重要属性:android:orientation 值:horizontal 元素水平摆放  |  vertical 元素垂直摆放 看代码: <!-- 第一个线性布局, 我们可以视为html中的div,用于对于整个界面进行布局 这里面 xmlns:android和xmlns:tool

《Android深度探索》第六章心得体会

第六章讲述了一个简单的驱动程序:统计单词个数 本章的重点在于了解到linux将每一个驱动都映射到一个文件当中,保存在/dev中.目的在与使与linux驱动的交互变得简单.另外很重要的一点就是需要指定回调函数,回调函数可以处理设备文件交换的数据. 第一步.建立linux驱动骨架 目的是给linux程序创建一个基本结构.Linux驱动中一般使用moudle_inie和moudle_exit来宏指定.因为这是linux驱动中比较重要的两个函数.所以包含这两个函数的文件也可以看作是linux驱动的骨架