《Android自定义控件开发入门与实战》笔记
文章平均质量分 90
《Android自定义控件开发入门与实战》读书笔记
itzyjr
Stay hungry,Stay foolish!
展开
-
CustomView必知必会——问题清单
目录第一章(绘图基础)一、基本图形绘制二、路径三、文字四、Region五、Canvas(画布)六、控件的使用方法第二章(视图动画)一、视图动画标签二、视图动画的代码实现三、插值器初探四、动画示例五、逐帧动画第三章(属性动画)一、ValueAnimator的基本使用二、自定义插值器与Evaluator三、ValueAnimator进阶——ofObject四、ObjectAnimator五、组合动画——AnimatorSet六、Animator动画的XML实现第四章第一章(绘图基础)一、基本图形绘制Pa原创 2021-09-01 18:53:33 · 415 阅读 · 0 评论 -
第13章 CustomView控件高级属性
一、GestureDetector手势检测概述:当用户触摸屏幕的时候,会产生许多手势,如 down、up 、scroll 、fling等。GestureDetector(手势检测)类,通过这个类可以识别很多手势。在识别出于势之后,具体的事务处理则交 由程序员自己来实现。GestureDetector.OnGestureListener接口:1.基本讲解如果我们写一个类并继承自OnGestureListener,则会提示有几个必须重写的函数。private class ge.原创 2020-06-19 06:35:52 · 408 阅读 · 0 评论 -
第12章 CustomView封装控件
一、自定义属性与自定义Style概述:在一个自 定义控件的XML中经常会发现类似下面的代码 :<com.trydeclarestyle.MyTextView android:layout_width="fill_parent" android:layout_height="fill_parent" attrstest:headerHeight="300dp" attrstest:headerVisibleHeight="100dp" attrste原创 2020-06-19 04:29:20 · 235 阅读 · 0 评论 -
第11章 CustomView Matrix与坐标变换
一、矩阵运算矩阵的加法与减法:1.运算规则设矩阵则简言之,两个矩阵相加减,即它们相同位置的元素相加减。注意:只有对于两个行数、列数分别相等(同型矩阵),加减法运算才有意义,即加减法运算是可行的。2.运算性质交换律:A+B=B+A结合律:(A+B)+C=A+(B+C)矩阵与数的乘法:1.运算规则数乘以矩阵A,就是将数乘以矩阵A中的每一个元素,记为A或A。特别地,称为的负矩阵。2.运算性质结合律:分配律:例:已知两个矩阵,,满足矩阵方程A+2X原创 2020-06-19 00:44:15 · 398 阅读 · 0 评论 -
第10章 CustomView Android画布
除了重写onDraw()、dispatchDraw()函数,还可以通过以下方法获得画布:●通过Bitmap创建。●通过SurfaceView的SurfaceHolder.lockCanvas()函数获取。另外,通过创建Drawable对象,然后将画好的Drawable对象画在画布上,也是创建Bitmap的一种方式。public abstract class DrawableextendsObjectjava.lang.Object ↳ android.graphic...原创 2020-06-18 21:17:18 · 605 阅读 · 0 评论 -
第9章 CustomView Canvas与图层
一、获取Canvas对象的方法方法一:重写onDraw()、dispatchDraw()函数protected void onDraw(Canvas canvas) { super.onDraw(canvas);}protected void dispatchDraw(Canvas canvas) { super.dispatch(canvas);}可以看到,onDraw()、dispatchDraw()函数在传入的参数中都有一个Canvas对象,这个Canvas对象是原创 2020-06-15 02:03:39 · 315 阅读 · 0 评论 -
第8章 CustomView混合模式
一、混合模式之PorterDuffXfermodePorterDuffXfermode概述:public class XfermodeextendsObjectjava.lang.Object ↳ android.graphics.Xfermode Known direct subclasses PorterDuffXfermode public PorterDuffXfermode(PorterDuff.Mode mode)构造函数只有一个参数P...原创 2020-06-14 21:39:00 · 257 阅读 · 0 评论 -
第7章 CustomView绘图进阶
一、贝济埃曲线概述:在Path系列函数中,除了一些基本的设置和绘图用法外,还有一个强大的工具——贝济埃曲线。它能将利用moveTo、lineTo连续的生硬路径变得平滑,也能够实现很多炫酷的效果,比如水波纹等。1.贝济埃曲线的来源1962年法国工程师皮埃尔·贝济埃发表,他运用贝...原创 2020-06-13 19:09:35 · 1127 阅读 · 0 评论 -
第6章 CustomView Paint基本使用
一、硬件加速概述:GPU:Graphic Processing Uint,即“图形处理器”。与CPU不同,GPU是专门为处理图形任务而产生的芯片。对Android来说,在API 11之前是没有GPU的概念的;在API 11之后,在程序集中加入了对GPU加速的支持;在API 14之后,硬件加速是默认开启的。我们可以显式地强制在进行图像计算时使用GPU而不是CPU。软件绘制与硬件加速的区别:在基于软件的绘制模型下,CPU主导绘图,视图按照两个步骤绘制:●让View层次结构失效。●..原创 2020-06-11 23:04:26 · 249 阅读 · 0 评论 -
第5章 CustomView动画进阶
仅通过改变控件属性的方式实现一些复杂的动画效果是比较有难度的,比如Nexus的开机动画就根本实现不了。这里将展示如何利用PathMeasure和SVG动画来实现复杂的动画效果。初始化:PathMeasure类似一个计算器,可以计算出指定路径的一些信息,比如路径总长、指定长度所对应的坐标点等。构造方式一:PathMeasure pathMeasure = new PathMeasure();setPath(Path path, boolean forceClosed);构造方式二:Pat原创 2020-06-11 15:01:17 · 378 阅读 · 0 评论 -
第4章 CustomView属性动画进阶
一、PropertyValuesHolder与KeyframeValueAnimator和ObjectAnimator除了ofInt()、ofFloat()、ofObject()函数外,还都有一个函数。// ValueAnimator的public static ValueAnimator ofPropertyValuesHolder(PropertyValuesHolder... values)// ObjectAnimator的public static ObjectAnimator原创 2020-06-08 17:09:38 · 382 阅读 · 0 评论 -
第3章 CustomView属性动画
一、ValueAnimator的基本使用概述:1.视频动画与属性动画的区别(1)View Animation是在API Level 1时引入的,Property Animation是在API Level 11时引入的。(2)View AnimationAPI在android.view.animation包中,Property Animation API在android.animation包中。(3)View Animation中动画类命名都是XXXAnimation,Propert.原创 2020-06-07 22:12:46 · 352 阅读 · 0 评论 -
第2章 CustomView视图动画
一、视图动画标签概述:Android的视图动画由5种类型组成:alpha、scale、translate、rotate、set1.配置XML动画文件• alpha:渐变透明度动画效果• scale:渐变尺寸伸缩动画效果• translate:画面变换位置移动动画效果• rotate:画面转移旋转动画效果• set:定义动画集R.anim.scaleanim:<scale xlmns:android="http://schemas.android.com/apk/..原创 2020-06-06 13:58:18 · 330 阅读 · 0 评论 -
第1章 CustomView绘图基础
一、基本图形绘制1.概述我们平时画图需要两个工具:纸和笔。在Android中,笔就是Paint类,纸就是Canvas类。所以凡是跟画笔设置相关的,比如画笔大小、粗细、画笔颜色、透明度、字体样式等都在Paint类里设置;凡是要画出成品的东西,比如圆形、矩形、文字等都要调用Canvas类里的函数生成。package com.example.customwidgets;import android.content.Context;import android.graphics.Canvas;原创 2020-06-05 19:41:05 · 381 阅读 · 0 评论