Android自定義控制項高級進階與精彩實例

Android自定義控制項高級進階與精彩實例

Android自定義控制項高級進階與精彩實例》是2020年12月電子工業出版社出版的圖書,作者為啟艦

本書專注於介紹Android自定義控制項進階知識,通過精彩的案例對各種繪製、動畫技術進行了糅合講解。Android自定義控制項涉及動畫和色彩,本書將圖片地址製作成二維碼,可供讀者掃描觀看。本書配有源碼,可下載參考。

基本介紹

  • 書名:Android自定義控制項高級進階與精彩實例
  • 作者:啟艦
  • 出版社:電子工業出版社
  • 出版時間:2020年12月
  • 頁數:588 頁
  • 定價:129.00 元
  • 開本:16 開
  • ISBN:9787121402081
內容簡介,圖書目錄,作者簡介,

內容簡介

《Android自定義控制項高級進階與精彩實例》專注於介紹Android自定義控制項進階知識,並通過精彩的案例對各種繪製、動畫技術進行了糅合講解,讀者可以通過本書從巨觀層面、源碼層面對Android自定義控制項建立完整的認識。本書主要內容有3D特效的實現、高級矩陣知識、訊息處理機制、派生類型的選擇方法、多點觸控及輔助類、RecyclerView的使用方法及3D卡片的實現、動畫框架Lottie的講解與實戰等。
本書適合中高級從業者對Android自定義控制項相關知識進行查漏補缺和深入學習。

圖書目錄

第1章 3D特戒乘危海效 1
1.1 3D特效概述 1
1.1.1 2D坐標系與3D坐標系 3
1.1.2 Android中的Camera類 5
1.1.3 構造Camera類使用實例 8
1.2 Camera類用法詳解 12
1.2.1 平移 12
1.2.2 旋轉 16
1.2.3 改變Camera的位漏戰舟置 20
1.3 實現3D卡片翻轉效果 23
1.3.1 框架搭建 23
1.3.2 效果改進 29
1.3.3 正背面顯示不同的內容 34
1.4 實現小米時鐘的贈和觸摸傾斜效果 37
1.4.1 框架搭建 38
1.4.2 實現ClockViewGroup 39
1.4.3 ClockViewGroup套用 45
第2章 位置矩陣 46
2.1 位置矩陣概述 46
2.1.1 矩陣運算 46
2.1.2 位置矩陣簡介 48
2.2 Matrix類中函式用法詳解(一) 51
2.2.1 基本函式 51
2.2.2 前乘與後乘 55
2.2.3 其他功能函式之縮放(Scale) 59
2.2.4 其他功能函式之錯切(Skew) 67
2.2.5 其他功能函式之setSinCos 72
2.3 Matrix類中函式用法詳解(二) 75
2.3.1 mapPoints 75
2.3.2 其他map相關函式 77
2.3.3 setPolyToPoly 79
2.3.4 setRectToRect 82
2.3.5 其他函式 85
2.3.6 Matrix與Canvas 87
2.4 摺疊布局實戰(一)——核心原理 88
2.4.1 摺疊原理概述 89
2.4.2 實現完整摺疊效果 101
2.4.3 添加享鍵元陰影效果 105
2.5 摺疊布局實戰(二)——摺疊選單 108
2.5.1 使用ViewGroup實現摺疊效果 109
2.5.2 實現摺疊選單 114
第3章 派生類型的選擇與實例 121
3.1 派生類型的選擇方法概述 121
3.1.1 View類及ViewGroup類的選擇 121
3.1.2 繼承自View類的處理流程 123
3.1.3 繼承自View子類的處理流程 132
3.1.4 繼承自ViewGroup類的處理流程 135
3.1.5 繼承自ViewGroup子控制項類 140
3.2 自定義EditText 144
3.2.1 顯示刪除圖示 144
3.2.2 點擊刪除圖示並清空文字 147
3.3 實現圓角布局 148
3.3.1 實現布局類 148
3.3.2 使用布局類 149
3.3.3 修復背景問題 150
第4章 訊息處理 154
4.1 Android事件分發機制 154
4.1.1 概述 154
4.1.2 不包含onInterceptTouchEvent函式的ACTION_DOWN訊息傳遞流程 156
4.1.3 onInterceptTouchEvent函式的ACTION_DOWN訊息傳遞流程 161
4.1.4 關於ACTION_MOVE和ACTION_UP訊息傳遞流程 164
4.1.5 在ACTION_MOVE訊息到民淚奔來時攔截 168
4.2 訊息攔截實戰——實危組廈現可拖動的方向按鍵 173
4.2.1 框架搭建 174
4.2.2 實現拖動效果 178
4.3 坐標系 181
4.3.1 螢幕坐鞏籃兵套標系和數學坐標系的區別 182
4.3.2 View坐標系 182
4.3.3 MotionEvent提供的函式 186
4.4 詳解requestDisallowInterceptTouchEvent函式 187
4.4.1 requestDisallowInterceptTouchEvent函式概述 187
4.4.2 嘗試使用requestDisallowInterceptTouchEvent函式 187
4.5 滑動衝突處理原理與實戰 192
4.5.1 常見的滑動衝突場景 193
4.5.2 解決滑動衝突問題的思路 193
4.5.3 滑動衝突解決方法 194
4.5.4 滑動衝突實戰 196
第5章 多點觸控詳解 203
5.1 多點觸控基本知識 203
5.1.1 概述 203
5.1.2 單點觸控與多點觸控 203
5.1.3 多點觸控 206
5.1.4 實例:追蹤第2根手指 207
5.1.5 多點觸控與ACTION_MOVE訊息 211
5.1.6 其他獲取函式 213
5.2 拖動圖片控制項與多點觸控 216
5.2.1 單點觸控下的拖動圖片控制項 216
5.2.2 多點觸控下的拖動圖片控制項 220
5.3 製作雙指縮放控制項 222
5.3.1 原理概述 222
5.3.2 實現可縮放的文本控制項 223
第6章 工具類 228
6.1 Scroller工具類 228
6.1.1 探討scrollTo與scrollBy函式 228
6.1.2 Scroller概述 234
6.1.3 改造demo 236
6.1.4 實戰:Android滑塊開關 240
6.2 ViewDragHelper類簡介 251
6.2.1 概述 251
6.2.2 簡單用法 252
6.2.3 疑問解答 260
6.2.4 邊界判斷 265
6.2.5 onViewReleased函式 270
6.3 實現QQ側邊欄效果 275
6.3.1 基本功能實現 276
6.3.2 添加手指釋放時的動畫 280
6.3.3 展開側邊欄的實現原理 281
6.3.4 實現展開側邊欄 283
6.3.5 添加側邊欄的展開/關閉動畫 287
6.4 ViewDragHelper類源碼解析 289
6.4.1 創建ViewDragHelper實例 289
6.4.2 訊息不被子控制項消費的Touch事件的處理方法 291
6.4.3 訊息被子控制項消費的Touch事件的處理方法 314
6.4.4 遺留問題解析 320
6.5 ViewConfiguration類 323
6.5.1 距離相關函式 324
6.5.2 速度相關函式 325
6.5.3 時間相關函式 325
6.5.4 其他函式 326
第7章 RecyclerView 327
7.1 RecyclerView概述 328
7.1.1 導入support-v7包 328
7.1.2 RecyclerView的簡單使用 329
7.1.3 其他LayoutManager 334
7.1.4 載入不同類型的View 340
7.2 添加分割線 345
7.2.1 引入ItemDecoration 345
7.2.2 自定義ItemDecoration 347
7.3 自定義LayoutManager 359
7.3.1 初始化展示界面 360
7.3.2 添加滑動效果 362
7.4 RecyclerView回收復用HolderView的實現方式(一) 367
7.4.1 RecyclerView是否會自動回收復用HolderView 368
7.4.2 RecyclerView回收復用HolderView的原理 370
7.4.3 給CustomLayoutManager添加回收復用HolderView功能 374
7.5 RecyclerView回收復用HolderView的實現方式(二) 386
7.5.1 初步實現 386
7.5.2 繼續最佳化:回收時的布局 392
7.6 ItemTouchHelper 396
7.6.1 ItemTouchHelper的基本功能實現 397
7.6.2 真正實現滑動刪除與拖曳移動 401
7.6.3 其他功能:互動時的背景變化 402
7.6.4 GridView中的滑動/拖動效果 405
7.6.5 getMovementFlags中的各種flag 407
7.6.6 禁用拖曳與指定拖曳 409
7.6.7 onChildDraw函式 417
7.6.8 其他函式 419
7.6.9 布局方向 421
第8章 RecyclerView特效實戰 423
8.1 滑動畫廊控制項 423
8.1.1 實現item布局 424
8.1.2 實現橫向布局 427
8.1.3 實現橫向滑動 430
8.1.4 實現卡片疊加 433
8.1.5 修改卡片起始位置 434
8.1.6 更改默認顯示順序 435
8.1.7 添加滑動縮放功能 441
8.1.8 bug修復 444
8.1.9 拓展1:fling校正 446
8.1.10 拓展2:製作3D畫廊 452
8.2 仿QQ列表滑動刪除效果 454
8.2.1 有問題的ItemTouchHelper之實現demo 455
8.2.2 有問題的ItemTouchHelper之顯示出底部操作欄 459
8.2.3 改造ItemTouchHelper 466
8.2.4 使用ItemTouchHelperExtension實現 467
8.3 使用SnapHelper實現滑動對齊 470
8.3.1 SnapHelper概述 471
8.3.2 LinearSnapHelper的使用 472
8.3.3 PagerSnapHelper的使用 475
第9章 精彩自定義控制項實戰 476
9.1 華為時鐘 476
9.1.1 實現原理 477
9.1.2 實現遮罩疊加 477
9.1.3 實現遮罩旋轉 481
9.1.4 顯示時間 483
9.1.5 封裝組件 486
9.2 圓環動畫 488
9.2.1 圓環扇形原理 489
9.2.2 初步實現控制項圓環效果 492
9.2.3 製作多彩圓環 497
9.2.4 實現漸顯動畫 499
9.3 自定義控制項與組合控制項實戰 503
9.3.1 初步實現VolumeView 505
9.3.2 實現音量動效 511
9.3.3 組合控制項 514
第10章 Lottie動畫框架 519
10.1 Lottie概述 519
10.1.1 Lottie是什麼 519
10.1.2 Lottie demo之基本功能 521
10.1.3 Lottie demo之線上載入Lottie 523
10.1.4 Lottie demo之其他功能 528
10.1.5 Lottie社區 529
10.1.6 Lottie動畫優勢 531
10.2 Lottie與AE 531
10.2.1 環境安裝 531
10.2.2 Lottie完整使用流程 532
10.2.3 Lottie JSON與AE 536
10.2.4 圖片圖層的使用 542
10.2.5 文本圖層的使用 544
10.2.6 Lottie支持的AE功能列表 546
10.3 Lottie的使用方法 547
10.3.1 初步使用Lottie 547
10.3.2 Lottie在代碼中的使用 552
10.4 Lottie核心原理 567
10.4.1 概述 567
10.4.2 初始化 567
10.4.3 測量與布局 570
10.4.4 繪圖 571
10.4.5 如何動起來 573
10.4.6 疑問解答 573

作者簡介

本名張恩偉,Android研發專家、CSDN部落格專家、CSDN部落格之星,《Android自定義控制項入門與實戰》《Android自定義控制項高級進階與精彩實例》作者,電子工業出版社博文視點優秀作者,曾就職於阿里巴巴,現就職於vivo。
2.4.1 摺疊原理概述 89
2.4.2 實現完整摺疊效果 101
2.4.3 添加陰影效果 105
2.5 摺疊布局實戰(二)——摺疊選單 108
2.5.1 使用ViewGroup實現摺疊效果 109
2.5.2 實現摺疊選單 114
第3章 派生類型的選擇與實例 121
3.1 派生類型的選擇方法概述 121
3.1.1 View類及ViewGroup類的選擇 121
3.1.2 繼承自View類的處理流程 123
3.1.3 繼承自View子類的處理流程 132
3.1.4 繼承自ViewGroup類的處理流程 135
3.1.5 繼承自ViewGroup子控制項類 140
3.2 自定義EditText 144
3.2.1 顯示刪除圖示 144
3.2.2 點擊刪除圖示並清空文字 147
3.3 實現圓角布局 148
3.3.1 實現布局類 148
3.3.2 使用布局類 149
3.3.3 修復背景問題 150
第4章 訊息處理 154
4.1 Android事件分發機制 154
4.1.1 概述 154
4.1.2 不包含onInterceptTouchEvent函式的ACTION_DOWN訊息傳遞流程 156
4.1.3 onInterceptTouchEvent函式的ACTION_DOWN訊息傳遞流程 161
4.1.4 關於ACTION_MOVE和ACTION_UP訊息傳遞流程 164
4.1.5 在ACTION_MOVE訊息到來時攔截 168
4.2 訊息攔截實戰——實現可拖動的方向按鍵 173
4.2.1 框架搭建 174
4.2.2 實現拖動效果 178
4.3 坐標系 181
4.3.1 螢幕坐標系和數學坐標系的區別 182
4.3.2 View坐標系 182
4.3.3 MotionEvent提供的函式 186
4.4 詳解requestDisallowInterceptTouchEvent函式 187
4.4.1 requestDisallowInterceptTouchEvent函式概述 187
4.4.2 嘗試使用requestDisallowInterceptTouchEvent函式 187
4.5 滑動衝突處理原理與實戰 192
4.5.1 常見的滑動衝突場景 193
4.5.2 解決滑動衝突問題的思路 193
4.5.3 滑動衝突解決方法 194
4.5.4 滑動衝突實戰 196
第5章 多點觸控詳解 203
5.1 多點觸控基本知識 203
5.1.1 概述 203
5.1.2 單點觸控與多點觸控 203
5.1.3 多點觸控 206
5.1.4 實例:追蹤第2根手指 207
5.1.5 多點觸控與ACTION_MOVE訊息 211
5.1.6 其他獲取函式 213
5.2 拖動圖片控制項與多點觸控 216
5.2.1 單點觸控下的拖動圖片控制項 216
5.2.2 多點觸控下的拖動圖片控制項 220
5.3 製作雙指縮放控制項 222
5.3.1 原理概述 222
5.3.2 實現可縮放的文本控制項 223
第6章 工具類 228
6.1 Scroller工具類 228
6.1.1 探討scrollTo與scrollBy函式 228
6.1.2 Scroller概述 234
6.1.3 改造demo 236
6.1.4 實戰:Android滑塊開關 240
6.2 ViewDragHelper類簡介 251
6.2.1 概述 251
6.2.2 簡單用法 252
6.2.3 疑問解答 260
6.2.4 邊界判斷 265
6.2.5 onViewReleased函式 270
6.3 實現QQ側邊欄效果 275
6.3.1 基本功能實現 276
6.3.2 添加手指釋放時的動畫 280
6.3.3 展開側邊欄的實現原理 281
6.3.4 實現展開側邊欄 283
6.3.5 添加側邊欄的展開/關閉動畫 287
6.4 ViewDragHelper類源碼解析 289
6.4.1 創建ViewDragHelper實例 289
6.4.2 訊息不被子控制項消費的Touch事件的處理方法 291
6.4.3 訊息被子控制項消費的Touch事件的處理方法 314
6.4.4 遺留問題解析 320
6.5 ViewConfiguration類 323
6.5.1 距離相關函式 324
6.5.2 速度相關函式 325
6.5.3 時間相關函式 325
6.5.4 其他函式 326
第7章 RecyclerView 327
7.1 RecyclerView概述 328
7.1.1 導入support-v7包 328
7.1.2 RecyclerView的簡單使用 329
7.1.3 其他LayoutManager 334
7.1.4 載入不同類型的View 340
7.2 添加分割線 345
7.2.1 引入ItemDecoration 345
7.2.2 自定義ItemDecoration 347
7.3 自定義LayoutManager 359
7.3.1 初始化展示界面 360
7.3.2 添加滑動效果 362
7.4 RecyclerView回收復用HolderView的實現方式(一) 367
7.4.1 RecyclerView是否會自動回收復用HolderView 368
7.4.2 RecyclerView回收復用HolderView的原理 370
7.4.3 給CustomLayoutManager添加回收復用HolderView功能 374
7.5 RecyclerView回收復用HolderView的實現方式(二) 386
7.5.1 初步實現 386
7.5.2 繼續最佳化:回收時的布局 392
7.6 ItemTouchHelper 396
7.6.1 ItemTouchHelper的基本功能實現 397
7.6.2 真正實現滑動刪除與拖曳移動 401
7.6.3 其他功能:互動時的背景變化 402
7.6.4 GridView中的滑動/拖動效果 405
7.6.5 getMovementFlags中的各種flag 407
7.6.6 禁用拖曳與指定拖曳 409
7.6.7 onChildDraw函式 417
7.6.8 其他函式 419
7.6.9 布局方向 421
第8章 RecyclerView特效實戰 423
8.1 滑動畫廊控制項 423
8.1.1 實現item布局 424
8.1.2 實現橫向布局 427
8.1.3 實現橫向滑動 430
8.1.4 實現卡片疊加 433
8.1.5 修改卡片起始位置 434
8.1.6 更改默認顯示順序 435
8.1.7 添加滑動縮放功能 441
8.1.8 bug修復 444
8.1.9 拓展1:fling校正 446
8.1.10 拓展2:製作3D畫廊 452
8.2 仿QQ列表滑動刪除效果 454
8.2.1 有問題的ItemTouchHelper之實現demo 455
8.2.2 有問題的ItemTouchHelper之顯示出底部操作欄 459
8.2.3 改造ItemTouchHelper 466
8.2.4 使用ItemTouchHelperExtension實現 467
8.3 使用SnapHelper實現滑動對齊 470
8.3.1 SnapHelper概述 471
8.3.2 LinearSnapHelper的使用 472
8.3.3 PagerSnapHelper的使用 475
第9章 精彩自定義控制項實戰 476
9.1 華為時鐘 476
9.1.1 實現原理 477
9.1.2 實現遮罩疊加 477
9.1.3 實現遮罩旋轉 481
9.1.4 顯示時間 483
9.1.5 封裝組件 486
9.2 圓環動畫 488
9.2.1 圓環扇形原理 489
9.2.2 初步實現控制項圓環效果 492
9.2.3 製作多彩圓環 497
9.2.4 實現漸顯動畫 499
9.3 自定義控制項與組合控制項實戰 503
9.3.1 初步實現VolumeView 505
9.3.2 實現音量動效 511
9.3.3 組合控制項 514
第10章 Lottie動畫框架 519
10.1 Lottie概述 519
10.1.1 Lottie是什麼 519
10.1.2 Lottie demo之基本功能 521
10.1.3 Lottie demo之線上載入Lottie 523
10.1.4 Lottie demo之其他功能 528
10.1.5 Lottie社區 529
10.1.6 Lottie動畫優勢 531
10.2 Lottie與AE 531
10.2.1 環境安裝 531
10.2.2 Lottie完整使用流程 532
10.2.3 Lottie JSON與AE 536
10.2.4 圖片圖層的使用 542
10.2.5 文本圖層的使用 544
10.2.6 Lottie支持的AE功能列表 546
10.3 Lottie的使用方法 547
10.3.1 初步使用Lottie 547
10.3.2 Lottie在代碼中的使用 552
10.4 Lottie核心原理 567
10.4.1 概述 567
10.4.2 初始化 567
10.4.3 測量與布局 570
10.4.4 繪圖 571
10.4.5 如何動起來 573
10.4.6 疑問解答 573

作者簡介

本名張恩偉,Android研發專家、CSDN部落格專家、CSDN部落格之星,《Android自定義控制項入門與實戰》《Android自定義控制項高級進階與精彩實例》作者,電子工業出版社博文視點優秀作者,曾就職於阿里巴巴,現就職於vivo。

相關詞條

熱門詞條

聯絡我們