Android自定义控件开发入门与实战 - (EPUB全文下载)
文件大小:0.98 mb。
文件格式:epub 格式。
书籍内容:
Android自定义控件开发入门与实战
第1章 绘图基础
动画篇
第2章 视图动画
第3章 属性动画
第4章 属性动画进阶
第5章 动画进阶
绘图篇
第6章 Paint基本使用
第7章 绘图进阶
第8章 混合模式
第9章 Canvas与图层
第10章 Android画布
第11章 Matrix与坐标变换
视图篇
第12章 封装控件
第13章 控件高级属性
反侵权盗版声明
第1章 绘图基础
迷茫,本就是青春该有的样子,但不要让未来的你讨厌现在的自己。
本章作为开篇第1章,主要讲解有关自定义控件系列的一些基础知识,是后续各章节的根基。
由于本书初始成稿时已经近700页,而这么厚的书定价比较高,因此对第1章的内容进行了删减,只保留核心的部分。不过本章完整版本提供了网络下载,读者可登录博文视点本书页面自行下载,其中详细介绍了有关绘图基础知识的内容。
1.1 基本图形绘制
1.1.1 概述
我们平时画图需要两个工具:纸和笔。在Android中,Paint类就是画笔,而Canvas类就是纸,在这里叫作画布。
所以,凡是跟画笔设置相关的,比如画笔大小、粗细、画笔颜色、透明度、字体的样式等,都在Paint类里设置;同样,凡是要画出成品的东西,比如圆形、矩形、文字等,都要调用Canvas类里的函数生成。
下面通过一个自定义控件的例子来看一下如何生成自定义控件,以及Paint和Canvas类的用法。
(1)新建一个工程,然后写一个类派生自View。
代码很简单,首先,写一个类派生自View。派生自View表示当前是一个自定义控件,类似 Button、TextView 这些控件都是派生自 View 的。如果我们想像 LinearLayout、RelativeLayout这样生成一个容器,则需要派生自ViewGroup。有关ViewGroup的知识,我们会在后面的章节中讲述。
其次,重写onDraw(Canvas canvas)函数。可以看到,在该函数中,入参是一个Canvas对象,也就是当前控件的画布,所以我们只要调用Canvas的绘图函数,效果就可以直接显示在控件上了。
在onDraw(Canvas canvas)函数中,我们设置了画笔的基本属性。
在这里,我们将画笔设置成红色,填充样式为描边,并且将画笔的宽度设置为50px(有关这些属性的具体含义,会在后面一一讲述)。
最后,我们利用canvas.drawCircle(190,200,150,paint);语句画了一个圆。需要注意的是,画圆所用的画笔就是我们在这里指定的。
(2)使用自定义控件。
我们可以直接在主布局中使用自定义控件(main.xml)。
可以看到,在XML中使用自定义控件时,需要使用完整的包名加类包的方式来引入。注意,这里的布局方式使用的全屏方式。后面会讲到如何给自定义控件使用wrap_content属性,而目前我们全屏显示控件即可。
效果如下图所示。
从这里可以看到,只需要先创建一个派生自View的类,再重新在onDraw()函数中设置Paint并调用Canvas的一些绘图函数,就可以画出我们想要的图形。由此看来,自定义控件并不复杂。下面分别来看如何设置画笔,以及Canvas中一些常用的绘图函数。
1.1.2 画笔的基本设置
下面初步讲一下1.1.1节的示例中所涉及的几个函数。
1.setColor()
该函数的作用是设置画笔颜色,完整的函数声明如下:
void setColor(int color)
我们知道,一种颜色是由红、绿、蓝三色合成出来的,所以参数color只能取8位的0xAARRGGBB样式颜色值。
其中:
A代表透明度(Alpha),取值范围是0~255(对应十六进制数0x00~0xFF),取值越小,透明度越高,图像也就越透明。当取0时,图像完全不可见。
R代表红色值(Red),取值范围是0~255(对应十六进制数0x00~0xFF),取值越小,红色越少。当取0时,表示红色完全不可见;当取255时,红色完全显示。
G代表绿色值(Green),取值范围是0~255(对应十六进制数0x00~0xFF),取值越小,绿色越少。当取0时,表示绿色完全不可见;当取255时,绿色完全显示。
B代表蓝色值(Blue),取值范围是0~255(对应十六进制数0x00~0xFF),取值越小,蓝色越少。当取0时,表示蓝色完全不可见;当取255时,蓝色完全显示。
比如0xFFFF0000就表示大红色。因为透明度是255,表示完全不透明,红色取全量值255,其他色值全取0,表示颜色中只有红色;当然,如果我们不需要那么红,则可以适当减少红色值,比如0xFF0F0000就会显示弱红色。当表示黄色时,由于黄色是由红色和绿色合成的,所以0xFFFFFF00就表示纯黄色。当然,如果我们需要让黄色带有一部分透明度,以便显示出所画图像底层图像,则可以适当减少透明度值,比如0xABFFFF00;当透明度值减少到0时,任何颜色都是不可见的,也就是图像变成了全透明,比如0x00FFFFFF,虽然有颜色值,但由于透明度是0,所以整个颜色是不可见的。
其实,除手动组合颜色的方法以外,系统还提供了一个专门用来解析颜色的类——Color (有关Color类的使用,我们将在本章后面介绍)。
下面绘制一大一小两个圆,并且将这两个圆叠加起来,上方的圆半透明,代码如下:
这里绘制了两个圆,第一个圆的颜色值是0xFFFF0000,即不透明的红色,半径取150px;第二个圆的颜色值是0x7EFFFF00,即半透明的黄色,半径取100px。效果如下图所示。
扫码看彩色图
2.setStyle()
完整的函数声明如下:
void setStyle(Style style)
该函数用于设置填充样式,对于文字和几何图形都有效。style的取值如下。
Paint.Style.FILL:仅填充内部。
Paint.Style.FILL_AND_STROKE:填充内部和描边。
Paint.Style.STROKE:仅描边。
............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » Android自定义控件开发入门与实战 - (EPUB全文下载)