第六章: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是必须重载实现的方法.
第六章:Android的Drawable的更多相关文章
- Android群英传》读书笔记 (3) 第六章 Android绘图机制与处理技巧 + 第七章 Android动画机制与使用技巧
第六章 Android绘图机制与处理技巧 1.屏幕尺寸信息屏幕大小:屏幕对角线长度,单位“寸”:分辨率:手机屏幕像素点个数,例如720x1280分辨率:PPI(Pixels Per Inch):即DP ...
- 《Android开发艺术探索》读书笔记 (6) 第6章 Android的Drawable
本节和<Android群英传>中的第六章Android绘图机制与处理技巧有关系,建议先阅读该章的总结 第6章 Android的Drawable 6.1 Drawable简介 (1)Andr ...
- 我的Android六章:Android中SQLite数据库操作
今天学习的内容是Android中的SQLite数据库操作,在讲解这个内容之前小编在前面有一篇博客也是讲解了SQLite数据库的操作,而那篇博客的讲解是讲述了 如何在Window中通过DOM来操作数据库 ...
- Android群英传笔记——第六章:Android绘图机制与处理技巧
Android群英传笔记--第六章:Android绘图机制与处理技巧 一直在情调,时间都是可以自己调节的,不然世界上哪有这么多牛X的人 今天就开始读第六章了,算日子也刚好一个月了,一个月就读一半,这效 ...
- 第六章:Reminders实验:第二部分[Learn Android Studio 汉化教程]
Learn Android Studio 汉化教程 Reminders Lab: Part 2 This chapter covers capturing user input through the ...
- Pro Android 4 第六章 构建用户界面以及使用控件(一)
目前为止,我们已经介绍了android的基础内容,但是还没开始接触用户界面(UI).本章我们将开始探讨用户界面和控件.我们先讨论一下android中UI设计的一般原理,然后我们在介绍一下an ...
- 第三部分:Android 应用程序接口指南---第二节:UI---第六章 对话框
第6章 对话框 一个对话框是一个小窗口,提示用户做出决定或输入额外的信息,一个对话框不填充屏幕并且通常用于在程序运行时中断,然后弹出通知提示用户,从而直接影响到正在运行的程序.图6-1就是对话框的外观 ...
- Android的学习第六章(布局一LinearLayout)
今天我们来说一下Android五大布局-LinearLayout布局(线性布局) 含义:线性布局,顾名思义,指的是整个Android布局中的控件摆放方式是以线性的方式摆放的, 主要作用:主要对整个界面 ...
- 第六章第一个linux个程序:统计单词个数
第六章第一个linux个程序:统计单词个数 从本章就开始激动人心的时刻——实战,去慢慢揭开linux神秘的面纱.本章的实例是统计一片文章或者一段文字中的单词个数. 第 1 步:建立 Linu x 驱 ...
随机推荐
- MVC、MVP、MVVM模型
在学习vue.react的过程中,总能看到MVVM模型,那么MVVM究竟是什么,下面将我最近看到的资料以及自己的想法总结一下. 与MVVM相似的,还有MVC.MVP,先从MVC.MVP这两个入手,方面 ...
- cb15a_c++_vector容器的自增长_每次增加百分之50
cb15a_c++_vector容器的自增长_每次增加百分之50每次自动容量代销扩充,增加百分之50_for windows C++,vector是用数组做出来的->数组的缺点和优点优点:具有下 ...
- #linux vscode 保存总提示“Retry as sudo”
linux中,对不同路径下的文件,系统默认指定了不同的操作权限(读/写/执行),出现这个问题是由于文件的权限不足造成的.(路径为/opt/lampp/htdocs/LearnPHP_jayce/hel ...
- 关于HTTP 请求方式: GET和POST的比较的本质
什么是HTTP? 超文本传输协议(HyperText Transfer Protocol -- HTTP)是一个设计来使客户端和服务器顺利进行通讯的协议. HTTP在客户端和服务器之间以request ...
- SpringMVC 学习笔记(三)数据的校验
34. 尚硅谷_佟刚_SpringMVC_数据绑定流程分析.avi 例如:在jsp中输入一个String字符串类型,需要转换成Date类型的流程如下 convertservice对传入的数据进行转换 ...
- redis高级命令2
主服务负责数据的写,从服务器负责客户端的高并发来读 创建主从复制 clone不能让上面的mac地址不能重复,IP地址也不能重复 122和123是从服务器,我们修改二者的配置文件 其中 192.168. ...
- 如何用Tesseract做日文OCR(c#实现)
首先做一下背景介绍,Tesseract是一个开源的OCR组件,主要针对的是打印体的文字识别,对手写的文字识别能力较差,支持多国语言(中文.英文.日文.韩文等).是开源世界里最强的一款OCR组件.当然和 ...
- python之单元测试及unittest框架的使用
例题取用登录模块:代码如下 def login_check(username,password): ''' 登录校验的函数 :param username:账号 :param password: 密码 ...
- 入门大数据---Flink核心概念综述
一.Flink 简介 Apache Flink 诞生于柏林工业大学的一个研究性项目,原名 StratoSphere .2014 年,由 StratoSphere 项目孵化出 Flink,并于同年捐赠 ...
- jmeter跨线程组获取cookie或jmeter线程组共享cookie-笔者亲测
一.Jmeter版本 此次示例采用的是apache-jmeter-5.2.1版本 二.设置配置文件使Cookie管理器保存cookie信息. 修改apache-jmeter-5.2.1/bin/jme ...