| 作者 |
| 启舰 |
| 丛书名 |
| 出版社 |
| 电子工业出版社 |
| ISBN |
| 9787121345562 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 在Android中,官方提供的控件是非常有限的,而我们所面临的需求却是多样的。大家在工作中难免会接触到自定义控件的需求,但系统讲解自定义控件知识的书籍却少之又少。不仅因为自定义控件涉及的知识丰富、繁杂,而且与动画和色彩相关的知识很难在纸张上表现出来。本书从自定义控件的动画、绘图、视图三方面入手,分别讲解与自定义控件相关的各种知识,给大家系统地梳理相关知识点,并且通过翔实的案例讲解每个知识点在现实工作中所能实现的功能。 |
| 目录 |
| 开 篇 第1章 绘图基础\t2 1.1 基本图形绘制\t2 1.1.1 概述\t2 1.1.2 画笔的基本设置\t4 1.1.3 Canvas使用基础\t6 1.1.4 Color\t10 1.2 路径\t11 1.2.1 概述\t11 1.2.2 直线路径\t12 1.2.3 弧线路径\t12 1.3 Region\t14 1.3.1 构造Region\t14 1.3.2 区域相交\t16 1.4 Canvas(画布)\t19 1.4.1 Canvas变换\t19 1.4.2 画布的保存与恢复\t23 动 画 篇 第2章 视图动画\t26 2.1 视图动画标签\t26 2.1.1 概述\t26 2.1.2 scale标签\t28 2.1.3 alpha标签\t34 2.1.4 rotate标签\t35 2.1.5 translate标签\t36 2.1.6 set标签\t37 2.2 视图动画的代码实现\t38 2.2.1 概述\t38 2.2.2 ScaleAnimation\t38 2.2.3 AlphaAnimation\t40 2.2.4 RotateAnimation\t40 2.2.5 TranslateAnimation\t41 2.2.6 AnimationSet\t42 2.2.7 Animation\t43 2.3 插值器初探\t44 2.3.1 AccelerateDecelerateInterpolator\t45 2.3.2 AccelerateInterpolator\t47 2.3.3 DecelerateInterpolator\t48 2.3.4 LinearInterpolator\t49 2.3.5 BounceInterpolator\t49 2.3.6 AnticipateInterpolator\t50 2.3.7 OvershootInterpolator\t51 2.3.8 AnticipateOvershootInterpolator\t53 2.3.9 CycleInterpolator\t54 2.4 动画示例\t55 2.4.1 镜头由远及近效果\t55 2.4.2 加载框效果\t56 2.4.3 扫描动画\t57 2.5 逐帧动画\t60 2.5.1 XML实现\t61 2.5.2 代码实现\t66 第3章 属性动画\t68 3.1 ValueAnimator的基本使用\t68 3.1.1 概述\t68 3.1.2 ValueAnimator的简单使用\t71 3.1.3 常用函数\t74 3.1.4 示例:弹跳加载中效果\t83 3.2 自定义插值器与Evaluator\t86 3.2.1 自定义插值器\t87 3.2.2 Evaluator\t90 3.3 ValueAnimator进阶ofObject\t96 3.3.1 概述\t96 3.3.2 示例:抛物动画\t98 3.4 ObjectAnimator\t101 3.4.1 概述\t101 3.4.2 ObjectAnimator动画原理\t106 3.4.3 自定义ObjectAnimator属性\t107 3.4.4 何时需要实现对应属性的get函数\t110 3.4.5 常用函数\t112 3.5 组合动画AnimatorSet\t113 3.5.1 playSequentially()与playTogether()函数\t113 3.5.2 AnimatorSet.Builder\t118 3.5.3 AnimatorSet监听器\t119 3.5.4 常用函数\t122 3.5.5 示例:路径动画\t126 3.6 Animator动画的XML实现\t132 3.6.1 animator标签\t132 3.6.2 objectAnimator标签\t134 第4章 属性动画进阶\t136 4.1 PropertyValuesHolder与Keyframe\t136 4.1.1 PropertyValuesHolder\t137 4.1.2 Keyframe\t140 4.1.3 PropertyValuesHolder之其他函数\t148 4.1.4 示例:电话响铃效果\t148 4.2 ViewPropertyAnimator\t150 4.2.1 概述\t150 4.2.2 常用函数\t150 4.2.3 性能考量\t153 4.3 为ViewGroup内的组件添加动画\t153 4.3.1 animateLayoutChanges属性\t154 4.3.2 LayoutTransition\t157 4.3.3 其他函数\t161 4.4 开源动画库NineOldAndroids\t163 4.4.1 NineOldAndroids中的ViewPropertyAnimator\t164 4.4.2 NineOldAndroids中的ViewHelper\t164 第5章 动画进阶\t168 5.1 利用PathMeasure实现路径动画\t168 5.1.1 初始化\t168 5.1.2 简单函数使用\t169 5.1.3 getSegment()函数\t171 5.1.4 getPosTan()函数\t177 5.1.5 getMatrix()函数\t181 5.1.6 示例:支付宝支付成功动画\t182 5.2 SVG动画\t184 5.2.1 概述\t184 5.2.2 vector标签与图像显示\t186 5.2.3 动态Vector\t197 5.2.4 示例:输入搜索动画\t198 绘 图 篇 第6章 Paint基本使用\t204 6.1 硬件加速\t204 6.1.1 概述\t204 6.1.2 软件绘制与硬件加速的区别\t204 6.1.3 禁用GPU硬件加速的方法\t206 6.2 文字\t207 6.2.1 概述\t207 6.2.2 绘图四线格与FontMetrics\t210 6.2.3 常用函数\t214 6.2.4 示例:定点写字\t216 6.3 Paint常用函数\t218 6.3.1 基本设置函数\t218 6.3.2 字体相关函数\t221 第7章 绘图进阶\t223 7.1 贝济埃曲线\t223 7.1.1 概述\t223 7.1.2 贝济埃曲线之quadTo\t227 7.1.3 贝济埃曲线之rQuadTo\t234 7.1.4 示例:波浪效果\t235 7.2 setShadowLayer与阴影效果\t238 7.2.1 setShadowLayer()构造函数\t238 7.2.2 清除阴影\t240 7.2.3 示例:给文字添加阴影\t242 7.3 BlurMaskFilter发光效果与图片阴影\t243 7.3.1 概述\t243 7.3.2 给图片添加纯色阴影\t245 7.4 Shader与BitmapShader\t248 7.4.1 Shader概述\t248 7.4.2 BitmapShader的基本用法\t249 7.4.3 示例一:望远镜效果\t254 7.4.4 示例二:生成不规则头像\t256 7.5 Shader之LinearGradient\t257 7.5.1 概述\t257 7.5.2 示例:闪光文字效果\t261 7.6 Shader之RadialGradient\t264 7.6.1 双色渐变\t264 7.6.2 多色渐变\t266 7.6.3 TileMode填充模式\t267 第8章 混合模式\t269 8.1 混合模式之AvoidXfermode\t269 8.1.1 混合模式概述\t269 8.1.2 AvoidXfermode\t270 8.1.3 AvoidXfermode绘制原理\t274 8.1.4 AvoidXfermode之Mode.AVOID\t275 8.2 混合模式之PorterDuffXfermode\t276 8.2.1 PorterDuffXfermode概述\t276 8.2.2 颜色叠加相关模式\t279 8.3 PorterDuffXfermode之源图像模式\t285 8.3.1 Mode.SRC\t285 8.3.2 Mode.SRC_IN\t285 8.3.3 Mode.SRC_OUT\t288 8.3.4 Mode.SRC_OVER\t293 8.3.5 Mode.SRC_ATOP\t293 8.4 目标图像模式与其他模式\t294 8.4.1 目标图像模式\t294 8.4.2 其他模式Mode.CLEAR\t303 8.4.3 模式总结\t303 第9章 Canvas与图层\t305 9.1 获取Canvas对象的方法\t305 9.1.1 方法一:重写onDraw()、dispatchDraw()函数\t305 9.1.2 方法二:使用Bitmap创建\t306 9.1.3 方法三:调用SurfaceHolder.lockCanvas()函数\t307 9.2 图层与画布\t307 9.2.1 saveLayer()函数\t307 9.2.2 画布与图层\t312 9.2.3 saveLayer()和saveLayerAlpha()函数的用法\t312 9.3 Flag的具体含义\t316 9.3.1 Flag之MATRIX_SAVE_FLAG\t316 9.3.2 Flag之CLIP_SAVE_FLAG\t318 9.3.3 Flag之FULL_COLOR_LAYER_SAVE_FLAG和HAS_ALPHA_ LAYER_SAVE_FLAG\t320 9.3.4 Flag之CLIP_TO_LAYER_SAVE_FLAG\t323 9.3.5 Flag之ALL_SAVE_FLAG\t325 9.4 恢复画布\t325 9.4.1 restoreToCount(int count)\t325 9.4.2 restore()与restoreToCount(int count)的关系\t328 第10章 Android画布\t330 10.1 ShapeDrawable\t331 10.1.1 shape标签与GradientDrawable\t331 10.1.2 ShapeDrawable的构造函数\t333 10.1.3 常用函数\t345 10.1.4 自定义Drawable\t351 10.1.5 Drawable与Bitmap对比\t357 10.2 Bitmap\t359 10.2.1 概述\t360 10.2.2 创建Bitmap方法之一:BitmapFactory\t362 10.2.3 BitmapFactory.Options\t369 10.2.4 创建Bitmap方法之二:Bitmap静态方法\t377 10.2.5 常用函数\t384 10.2.6 常见问题\t401 10.3 SurfaceView\t408 10.3.1 概述\t408 10.3.2 SurfaceView的基本用法\t409 10.3.3 SurfaceView双缓冲技术\t421 第11章 Matrix与坐标变换\t442 视 图 篇 第12章 封装控件\t444 12.1 自定义属性与自定义Style\t444 12.1.1 概述\t444 12.1.2 declare-styleable标签的使用方法\t444 12.1.3 在XML中使用自定义的属性\t446 12.1.4 在代码中获取自定义属性的值\t447 12.1.5 declare-styleable标签其他属性的用法\t448 12.2 测量与布局\t452 12.2.1 ViewGroup绘制流程\t452 12.2.2 onMeasure()函数与MeasureSpec\t452 12.2.3 onLayout()函数\t455 12.2.4 获取子控件margin值的方法\t460 12.3 实现FlowLayout容器\t466 12.3.1 XML布局\t466 12.3.2 提取margin值与重写onMeasure()函数\t468 第13章 控件高级属性\t475 13.1 GestureDetector手势检测\t475 13.1.1 概述\t475 13.1.2 GestureDetector.OnGestureListener接口\t475 13.1.3 GestureDetector.OnDoubleTapListener接口\t479 13.1.4 GestureDetector.SimpleOnGestureListener类\t483 13.1.5 onFling()函数的应用识别是向左滑还是向右滑\t485 13.2 Window与WindowManager\t486 13.2.1 Window与WindowManager的关系\t486 13.2.2 示例:腾讯手机管家悬浮窗的小火箭效果\t487 |