注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)工業(yè)技術(shù)建筑科學(xué)建筑設(shè)計Android自定義控件開發(fā)入門與實戰(zhàn)

Android自定義控件開發(fā)入門與實戰(zhàn)

Android自定義控件開發(fā)入門與實戰(zhàn)

定 價:¥99.00

作 者: 啟艦
出版社: 電子工業(yè)出版社
叢編項:
標(biāo) 簽: 暫缺

ISBN: 9787121345562 出版時間: 2018-07-01 包裝:
開本: 16開 頁數(shù): 504 字?jǐn)?shù):  

內(nèi)容簡介

  在Android中,官方提供的控件是非常有限的,而我們所面臨的需求卻是多樣的。大家在工作中難免會接觸到自定義控件的需求,但系統(tǒng)講解自定義控件知識的書籍卻少之又少。不僅因為自定義控件涉及的知識豐富、繁雜,而且與動畫和色彩相關(guān)的知識很難在紙張上表現(xiàn)出來。本書從自定義控件的動畫、繪圖、視圖三方面入手,分別講解與自定義控件相關(guān)的各種知識,給大家系統(tǒng)地梳理相關(guān)知識點,并且通過翔實的案例講解每個知識點在現(xiàn)實工作中所能實現(xiàn)的功能。

作者簡介

  張恩偉,花名啟艦,曾是阿里巴巴軟件研發(fā)工程師,是CSDN博客專家,寫有Android自定義控件三部曲系列文章,獲得很高的閱讀量,現(xiàn)在是杭州編程俠有限公司CEO。

圖書目錄

開 篇

第1章 繪圖基礎(chǔ) 2

1.1 基本圖形繪制 2

1.1.1 概述 2

1.1.2 畫筆的基本設(shè)置 4

1.1.3 Canvas使用基礎(chǔ) 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 構(gòu)造Region 14

1.3.2 區(qū)域相交 16

1.4 Canvas(畫布) 19

1.4.1 Canvas變換 19

1.4.2 畫布的保存與恢復(fù) 23

動 畫 篇

第2章 視圖動畫 26

2.1 視圖動畫標(biāo)簽 26

2.1.1 概述 26

2.1.2 scale標(biāo)簽 28

2.1.3 alpha標(biāo)簽 34

2.1.4 rotate標(biāo)簽 35

2.1.5 translate標(biāo)簽 36

2.1.6 set標(biāo)簽 37

2.2 視圖動畫的代碼實現(xiàn) 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 鏡頭由遠(yuǎn)及近效果 55

2.4.2 加載框效果 56

2.4.3 掃描動畫 57

2.5 逐幀動畫 60

2.5.1 XML實現(xiàn) 61

2.5.2 代碼實現(xiàn) 66

第3章 屬性動畫 68

3.1 ValueAnimator的基本使用 68

3.1.1 概述 68

3.1.2 ValueAnimator的簡單使用 71

3.1.3 常用函數(shù) 74

3.1.4 示例:彈跳加載中效果 83

3.2 自定義插值器與Evaluator 86

3.2.1 自定義插值器 87

3.2.2 Evaluator 90

3.3 ValueAnimator進(jìn)階――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 何時需要實現(xiàn)對應(yīng)屬性的get函數(shù) 110

3.4.5 常用函數(shù) 112

3.5 組合動畫――AnimatorSet 113

3.5.1 playSequentially()與playTogether()函數(shù) 113

3.5.2 AnimatorSet.Builder 118

3.5.3 AnimatorSet監(jiān)聽器 119

3.5.4 常用函數(shù) 122

3.5.5 示例:路徑動畫 126

3.6 Animator動畫的XML實現(xiàn) 132

3.6.1 animator標(biāo)簽 132

3.6.2 objectAnimator標(biāo)簽 134

第4章 屬性動畫進(jìn)階 136

4.1 PropertyValuesHolder與Keyframe 136

4.1.1 PropertyValuesHolder 137

4.1.2 Keyframe 140

4.1.3 PropertyValuesHolder之其他函數(shù) 148

4.1.4 示例:電話響鈴效果 148

4.2 ViewPropertyAnimator 150

4.2.1 概述 150

4.2.2 常用函數(shù) 150

4.2.3 性能考量 153

4.3 為ViewGroup內(nèi)的組件添加動畫 153

4.3.1 animateLayoutChanges屬性 154

4.3.2 LayoutTransition 157

4.3.3 其他函數(shù) 161

4.4 開源動畫庫NineOldAndroids 163

4.4.1 NineOldAndroids中的ViewPropertyAnimator 164

4.4.2 NineOldAndroids中的ViewHelper 164

第5章 動畫進(jìn)階 168

5.1 利用PathMeasure實現(xiàn)路徑動畫 168

5.1.1 初始化 168

5.1.2 簡單函數(shù)使用 169

5.1.3 getSegment()函數(shù) 171

5.1.4 getPosTan()函數(shù) 177

5.1.5 getMatrix()函數(shù) 181

5.1.6 示例:支付寶支付成功動畫 182

5.2 SVG動畫 184

5.2.1 概述 184

5.2.2 vector標(biāo)簽與圖像顯示 186

5.2.3 動態(tài)Vector 197

5.2.4 示例:輸入搜索動畫 198

繪 圖 篇

第6章 Paint基本使用 204

6.1 硬件加速 204

6.1.1 概述 204

6.1.2 軟件繪制與硬件加速的區(qū)別 204

6.1.3 禁用GPU硬件加速的方法 206

6.2 文字 207

6.2.1 概述 207

6.2.2 繪圖四線格與FontMetrics 210

6.2.3 常用函數(shù) 214

6.2.4 示例:定點寫字 216

6.3 Paint常用函數(shù) 218

6.3.1 基本設(shè)置函數(shù) 218

6.3.2 字體相關(guān)函數(shù) 221

第7章 繪圖進(jìn)階 223

7.1 貝濟(jì)埃曲線 223

7.1.1 概述 223

7.1.2 貝濟(jì)埃曲線之quadTo 227

7.1.3 貝濟(jì)埃曲線之rQuadTo 234

7.1.4 示例:波浪效果 235

7.2 setShadowLayer與陰影效果 238

7.2.1 setShadowLayer()構(gòu)造函數(shù) 238

7.2.2 清除陰影 240

7.2.3 示例:給文字添加陰影 242

7.3 BlurMaskFilter發(fā)光效果與圖片陰影 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 示例一:望遠(yuǎn)鏡效果 254

7.4.4 示例二:生成不規(guī)則頭像 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 顏色疊加相關(guān)模式 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 目標(biāo)圖像模式與其他模式 294

8.4.1 目標(biāo)圖像模式 294

8.4.2 其他模式――Mode.CLEAR 303

8.4.3 模式總結(jié) 303

第9章 Canvas與圖層 305

9.1 獲取Canvas對象的方法 305

9.1.1 方法一:重寫onDraw()、dispatchDraw()函數(shù) 305

9.1.2 方法二:使用Bitmap創(chuàng)建 306

9.1.3 方法三:調(diào)用SurfaceHolder.lockCanvas()函數(shù) 307

9.2 圖層與畫布 307

9.2.1 saveLayer()函數(shù) 307

9.2.2 畫布與圖層 312

9.2.3 saveLayer()和saveLayerAlpha()函數(shù)的用法 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 恢復(fù)畫布 325

9.4.1 restoreToCount(int count) 325

9.4.2 restore()與restoreToCount(int count)的關(guān)系 328

第10章 Android畫布 330

10.1 ShapeDrawable 331

10.1.1 shape標(biāo)簽與GradientDrawable 331

10.1.2 ShapeDrawable的構(gòu)造函數(shù) 333

10.1.3 常用函數(shù) 345

10.1.4 自定義Drawable 351

10.1.5 Drawable與Bitmap對比 357

10.2 Bitmap 359

10.2.1 概述 360

10.2.2 創(chuàng)建Bitmap方法之一:BitmapFactory 362

10.2.3 BitmapFactory.Options 369

10.2.4 創(chuàng)建Bitmap方法之二:Bitmap靜態(tài)方法 377

10.2.5 常用函數(shù) 384

10.2.6 常見問題 401

10.3 SurfaceView 408

10.3.1 概述 408

10.3.2 SurfaceView的基本用法 409

10.3.3 SurfaceView雙緩沖技術(shù) 421

第11章 Matrix與坐標(biāo)變換 442

視 圖 篇

第12章 封裝控件 444

12.1 自定義屬性與自定義Style 444

12.1.1 概述 444

12.1.2 declare-styleable標(biāo)簽的使用方法 444

12.1.3 在XML中使用自定義的屬性 446

12.1.4 在代碼中獲取自定義屬性的值 447

12.1.5 declare-styleable標(biāo)簽其他屬性的用法 448

12.2 測量與布局 452

12.2.1 ViewGroup繪制流程 452

12.2.2 onMeasure()函數(shù)與MeasureSpec 452

12.2.3 onLayout()函數(shù) 455

12.2.4 獲取子控件margin值的方法 460

12.3 實現(xiàn)FlowLayout容器 466

12.3.1 XML布局 466

12.3.2 提取margin值與重寫onMeasure()函數(shù) 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()函數(shù)的應(yīng)用――識別是向左滑還是向右滑 485

13.2 Window與WindowManager 486

13.2.1 Window與WindowManager的關(guān)系 486

13.2.2 示例:騰訊手機(jī)管家懸浮窗的小火箭效果 487

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號