失效链接处理 |
Android自定义控件开发入门与实战 PDF 下载
转载自:https://download.csdn.net/download/akira11234/10624444
本站整理下载:
版权归出版社和原作者所有,链接已删除,请购买正版
用户下载说明:
电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍:
http://product.dangdang.com/25307646.html
相关截图:
资料简介:
在Android中,官方提供的控件是非常有限的,而我们所面临的需求却是多样的。大家在工作中难免会接触到自定义控件的需求,但系统讲解自定义控件知识的书籍却少之又少。不仅因为自定义控件涉及的知识丰富、繁杂,而且与动画和色彩相关的知识很难在纸张上表现出来。本书从自定义控件的动画、绘图、视图三方面入手,分别讲解与自定义控件相关的各种知识,给大家系统地梳理相关知识点,并且通过翔实的案例讲解每个知识点在现实工作中所能实现的功能。
资料目录:
开 篇 第1章 绘图基础 2 1.1 基本图形绘制 2 1.1.1 概述 2 1.1.2 画笔的基本设置 4 1.1.3 Canvas使用基础 6 1.1.4 Color 10 1.2 路径 11 1.2.1 概述 11 1.2.2 直线路径 12 1.2.3 弧线路径 12 1.3 Region 14 1.3.1 构造Region 14 1.3.2 区域相交 16 1.4 Canvas(画布) 19 1.4.1 Canvas变换 19 1.4.2 画布的保存与恢复 23 动 画 篇 第2章 视图动画 26 2.1 视图动画标签 26 2.1.1 概述 26 2.1.2 scale标签 28 2.1.3 alpha标签 34 2.1.4 rotate标签 35 2.1.5 translate标签 36 2.1.6 set标签 37 2.2 视图动画的代码实现 38 2.2.1 概述 38 2.2.2 ScaleAnimation 38 2.2.3 AlphaAnimation 40 2.2.4 RotateAnimation 40 2.2.5 TranslateAnimation 41 2.2.6 AnimationSet 42 2.2.7 Animation 43 2.3 插值器初探 44 2.3.1 AccelerateDecelerateInterpolator 45 2.3.2 AccelerateInterpolator 47 2.3.3 DecelerateInterpolator 48 2.3.4 LinearInterpolator 49 2.3.5 BounceInterpolator 49 2.3.6 AnticipateInterpolator 50 2.3.7 OvershootInterpolator 51 2.3.8 AnticipateOvershootInterpolator 53 2.3.9 CycleInterpolator 54 2.4 动画示例 55 2.4.1 镜头由远及近效果 55 2.4.2 加载框效果 56 2.4.3 扫描动画 57 2.5 逐帧动画 60 2.5.1 XML实现 61 2.5.2 代码实现 66 第3章 属性动画 68 3.1 ValueAnimator的基本使用 68 3.1.1 概述 68 3.1.2 ValueAnimator的简单使用 71 3.1.3 常用函数 74 3.1.4 示例:弹跳加载中效果 83 3.2 自定义插值器与Evaluator 86 3.2.1 自定义插值器 87 3.2.2 Evaluator 90 3.3 ValueAnimator进阶——ofObject 96 3.3.1 概述 96 3.3.2 示例:抛物动画 98 3.4 ObjectAnimator 101 3.4.1 概述 101 3.4.2 ObjectAnimator动画原理 106 3.4.3 自定义ObjectAnimator属性 107 3.4.4 何时需要实现对应属性的get函数 110 3.4.5 常用函数 112 3.5 组合动画——AnimatorSet 113 3.5.1 playSequentially()与playTogether()函数 113 3.5.2 AnimatorSet.Builder 118 3.5.3 AnimatorSet监听器 119 3.5.4 常用函数 122 3.5.5 示例:路径动画 126 3.6 Animator动画的XML实现 132 3.6.1 animator标签 132 3.6.2 objectAnimator标签 134 第4章 属性动画进阶 136 4.1 PropertyValuesHolder与Keyframe 136 4.1.1 PropertyValuesHolder 137 4.1.2 Keyframe 140 4.1.3 PropertyValuesHolder之其他函数 148 4.1.4 示例:电话响铃效果 148 4.2 ViewPropertyAnimator 150 4.2.1 概述 150 4.2.2 常用函数 150 4.2.3 性能考量 153 4.3 为ViewGroup内的组件添加动画 153 4.3.1 animateLayoutChanges属性 154 4.3.2 LayoutTransition 157 4.3.3 其他函数 161 4.4 开源动画库NineOldAndroids 163 4.4.1 NineOldAndroids中的ViewPropertyAnimator 164 4.4.2 NineOldAndroids中的ViewHelper 164 第5章 动画进阶 168 5.1 利用PathMeasure实现路径动画 168 5.1.1 初始化 168 5.1.2 简单函数使用 169 5.1.3 getSegment()函数 171 5.1.4 getPosTan()函数 177 5.1.5 getMatrix()函数 181 5.1.6 示例:支付宝支付成功动画 182 5.2 SVG动画 184 5.2.1 概述 184 5.2.2 vector标签与图像显示 186 5.2.3 动态Vector 197 5.2.4 示例:输入搜索动画 198 绘 图 篇 第6章 Paint基本使用 204 6.1 硬件加速 204 6.1.1 概述 204 6.1.2 软件绘制与硬件加速的区别 204 6.1.3 禁用GPU硬件加速的方法 206 6.2 文字 207 6.2.1 概述 207 6.2.2 绘图四线格与FontMetrics 210 6.2.3 常用函数 214 6.2.4 示例:定点写字 216 6.3 Paint常用函数 218 6.3.1 基本设置函数 218 6.3.2 字体相关函数 221 第7章 绘图进阶 223 7.1 贝济埃曲线 223 7.1.1 概述 223 7.1.2 贝济埃曲线之quadTo 227 7.1.3 贝济埃曲线之rQuadTo 234 7.1.4 示例:波浪效果 235 7.2 setShadowLayer与阴影效果 238 7.2.1 setShadowLayer()构造函数 238 7.2.2 清除阴影 240 7.2.3 示例:给文字添加阴影 242 7.3 BlurMaskFilter发光效果与图片阴影 243 7.3.1 概述 243 7.3.2 给图片添加纯色阴影 245 7.4 Shader与BitmapShader 248 7.4.1 Shader概述 248 7.4.2 BitmapShader的基本用法 249 7.4.3 示例一:望远镜效果 254 7.4.4 示例二:生成不规则头像 256 7.5 Shader之LinearGradient 257 7.5.1 概述 257 7.5.2 示例:闪光文字效果 261 7.6 Shader之RadialGradient 264 7.6.1 双色渐变 264 7.6.2 多色渐变 266 7.6.3 TileMode填充模式 267 第8章 混合模式 269 8.1 混合模式之AvoidXfermode 269 8.1.1 混合模式概述 269 8.1.2 AvoidXfermode 270 8.1.3 AvoidXfermode绘制原理 274 8.1.4 AvoidXfermode之Mode.AVOID 275 8.2 混合模式之PorterDuffXfermode 276 8.2.1 PorterDuffXfermode概述 276 8.2.2 颜色叠加相关模式 279 8.3 PorterDuffXfermode之源图像模式 285 8.3.1 Mode.SRC 285 8.3.2 Mode.SRC_IN 285 8.3.3 Mode.SRC_OUT 288 8.3.4 Mode.SRC_OVER 293 8.3.5 Mode.SRC_ATOP 293 8.4 目标图像模式与其他模式 294 8.4.1 目标图像模式 294 8.4.2 其他模式——Mode.CLEAR 303 8.4.3 模式总结 303 第9章 Canvas与图层 305 9.1 获取Canvas对象的方法 305 9.1.1 方法一:重写onDraw()、dispatchDraw()函数 305 9.1.2 方法二:使用Bitmap创建 306 9.1.3 方法三:调用SurfaceHolder.lockCanvas()函数 307 9.2 图层与画布 307 9.2.1 saveLayer()函数 307 9.2.2 画布与图层 312 9.2.3 saveLayer()和saveLayerAlpha()函数的用法 312 9.3 Flag的具体含义 316 9.3.1 Flag之MATRIX_SAVE_FLAG 316 9.3.2 Flag之CLIP_SAVE_FLAG 318 9.3.3 Flag之FULL_COLOR_LAYER_SAVE_FLAG和HAS_ALPHA_ LAYER_SAVE_FLAG 320 9.3.4 Flag之CLIP_TO_LAYER_SAVE_FLAG 323 9.3.5 Flag之ALL_SAVE_FLAG 325 9.4 恢复画布 325 9.4.1 restoreToCount(int count) 325 9.4.2 restore()与restoreToCount(int count)的关系 328 第10章 Android画布 330 10.1 ShapeDrawable 331 10.1.1 shape标签与GradientDrawable 331 10.1.2 ShapeDrawable的构造函数 333 10.1.3 常用函数 345 10.1.4 自定义Drawable 351 10.1.5 Drawable与Bitmap对比 357 10.2 Bitmap 359 10.2.1 概述 360 10.2.2 创建Bitmap方法之一:BitmapFactory 362 10.2.3 BitmapFactory.Options 369 10.2.4 创建Bitmap方法之二:Bitmap静态方法 377 10.2.5 常用函数 384 10.2.6 常见问题 401 10.3 SurfaceView 408 10.3.1 概述 408 10.3.2 SurfaceView的基本用法 409 10.3.3 SurfaceView双缓冲技术 421 第11章 Matrix与坐标变换 442 视 图 篇 第12章 封装控件 444 12.1 自定义属性与自定义Style 444 12.1.1 概述 444 12.1.2 declare-styleable标签的使用方法 444 12.1.3 在XML中使用自定义的属性 446 12.1.4 在代码中获取自定义属性的值 447 12.1.5 declare-styleable标签其他属性的用法 448 12.2 测量与布局 452 12.2.1 ViewGroup绘制流程 452 12.2.2 onMeasure()函数与MeasureSpec 452 12.2.3 onLayout()函数 455 12.2.4 获取子控件margin值的方法 460 12.3 实现FlowLayout容器 466 12.3.1 XML布局 466 12.3.2 提取margin值与重写onMeasure()函数 468 第13章 控件高级属性 475 13.1 GestureDetector手势检测 475 13.1.1 概述 475 13.1.2 GestureDetector.OnGestureListener接口 475 13.1.3 GestureDetector.OnDoubleTapListener接口 479 13.1.4 GestureDetector.SimpleOnGestureListener类 483 13.1.5 onFling()函数的应用——识别是向左滑还是向右滑 485 13.2 Window与WindowManager 486 13.2.1 Window与WindowManager的关系 486 13.2.2 示例:腾讯手机管家悬浮窗的小火箭效果 487 |