Android 高級圖形程序設計 (Pro Android Graphics)

Android 高級圖形程序設計 (Pro Android Graphics)

作者: Wallace Jackson 周建娟 譯
出版社: 清華大學
出版在: 2022-02-01
ISBN-13: 9787302597582
ISBN-10: 7302597588





內容描述


《Android高級圖形程序設計》詳細闡述了與Android高級圖形程序設計相關的解決方案,主要包括Android數字圖像、Android數字視頻、Android幀動畫、Android程序動畫、Android DIP、Android UI佈局、Android UI小部件、高級ImageView圖形設計、高級ImageButton、使用9-Patch技術創建可擴展的圖像元件、高級圖像混合、高級圖像合成、數字圖像切換、基於幀的動畫、程序動畫、高級圖形、交互式繪圖、使用VideoView和MediaPlayer類播放視頻、從外部媒體服務器流式傳輸數字視頻等內容。此外,本書還提供了豐富的示例及代碼,以幫助讀者進一步理解相關方案的實現過程。 本書適合作為高等院校電腦及相關專業的教材和教學參考書,也可作為相關開發人員的自學讀物和參考手冊。


目錄大綱


目    錄
第1章  Android數字圖像:格式、概念和優化 1
1.1  Android的數字圖像格式:無損與有損 1
1.2  Android View和ViewGroup類:圖像容器 2
1.3  數字圖像的基礎:像素和寬高比 3
1.4  數字圖像的色彩:顏色理論和顏色深度 4
1.5  在Android中表示顏色:十六進製表示法 5
1.6  圖像合成:Alpha通道和混合模式 7
1.7  數字圖像蒙版:Alpha通道的流行用法 8
1.8  使蒙版邊緣更平滑:抗鋸齒的概念 9
1.9  優化數字圖像:壓縮和抖動 10
1.10  下載Android開發環境:Java和ADT 12
1.11  安裝和更新Android Developer ADT 16
1.12  小結 22
第2章  Android數字視頻:格式、概念和優化 25
2.1  Android數字視頻格式:MPEG-4 H.264和WebM(VP8) 25
2.2  Android VideoView和MediaPlayer類:視頻播放器 27
2.3  數字視頻的基礎:運動、幀和FPS 28
2.4  數字視頻約定:比特率、流、標清和高清 29
2.5  Android的數字視頻文件:分辨率密度目標 31
2.6  優化數字視頻:編解碼器和壓縮 32
2.7  在Eclipse ADT中創建Pro Android Graphics應用程序 35
2.8  創建視頻啟動屏幕的用戶界面設計 43
2.9  認識MainActivity.java Activity子類 44
2.10  創建視頻資產:使用Terragen 3 3D軟件 45
2.11  創建未壓縮的視頻:使用VirtualDub軟件 47
2.12  壓縮視頻資產:使用Sorenson Squeeze 53
2.13  在Android中安裝視頻資產:使用raw文件夾 60
2.14  在Android應用程序中引用視頻資產 62
2.15  小結 66
第3章  Android幀動畫:XML、概念和優化 69
3.1  幀動畫的概念:幀、幀速率和分辨率 69
3.2  優化幀動畫:顏色深度和幀速率 70
3.3  使用XML標記在Android中創建幀動畫 72
3.4  Android 標記:父幀容器 73
3.5  Android的標記:指定動畫幀 73
3.6  為GraphicsDesign App創建幀動畫 74
3.7  復制分辨率密度目標幀 74
3.8  使用XML創建幀動畫定義 77
3.9  在ImageView中引用幀動畫定義 80
3.10  使用Java實例化幀動畫定義 88
3.11  小結 92
第4章  Android程序動畫:XML、概念和優化 95
4.1  程序動畫概念:補間動畫和插值器 95
4.2  程序動畫數據值:範圍和中心點 98
4.3  程序動畫變換:旋轉、縮放、平移 98
4.4  程序動畫合成:Alpha混合 99
4.5  程序動畫計時:使用持續時間和偏移量 100
4.6  程序動畫循環:RepeatCount和RepeatMode 101
4.7  標記:使用XML對程序動畫進行分組 101
4.8  程序動畫與幀動畫:權衡 103
4.9  在GraphicsDesign應用中創建程序動畫的構思 104
4.10  使用XML創建程序動畫定義 104
4.11  在MainActivity.java中實例化Animation對象 109
4.12  使用創建更復雜的程序動畫 111
4.13  旋轉變換:復雜的動畫集 115
4.14  調整變換值:輕松調整XML 118
4.15  小結 119
 
第5章  Android DIP:與設備無關的像素圖形設計 121
5.1  Android支持設備顯示的方式:UI設計和用戶體驗 121
5.2  設備顯示概念:尺寸、密度、方向、DIP 122
5.3  與密度無關:創建相似的用戶體驗 124
5.4  通過標簽支持Android多屏 126
5.5  提供針對設備優化的用戶界面佈局設計 128
5.5.1  使用Android的smallestWidth屏幕配置修飾符 129
5.5.2  使用可用屏幕寬度修飾符 130
5.5.3  使用可用屏幕高度修飾符 131
5.6  提供針對設備優化的圖像可繪制資產 131
5.7  DisplayMetrics類:大小、密度和字體縮放 133
5.8  優化Android應用程序圖標 134
5.9  在正確的密度文件夾中安裝新的應用程序圖標 139
5.10  為自定義應用程序圖標配置AndroidManifest.xml 141
5.11  在Nexus One上測試新的應用程序圖標和標簽 144
5.12  小結 145
第6章  Android UI佈局:使用ViewGroup類進行圖形設計 147
6.1  Android ViewGroup超類:佈局基礎 147
6.2  ViewGroup LayoutParams類:佈局參數 148
6.3  不推薦使用的佈局:AbsoluteLayout和SlidingDrawer 150
6.4  Android的實驗性佈局:SlidingPaneLayout 150
6.5  Android RelativeLayout類:設計相對佈局 152
6.6  Android LinearLayout類:設計線性佈局 153
6.7  Android FrameLayout類:設計幀佈局 154
6.8  Android GridLayout類:設計網格佈局 155
6.9  DrawerLayout類:設計抽屜佈局 159
6.10  添加菜單項以訪問UI佈局容器 161
6.11  創建目錄活動 164
6.12  創建XML目錄線性佈局設計 167
6.13  將文本UI小部件添加到TOC UI佈局容器 171
6.14  使用onOptionsItemSelected()方法添加菜單功能 177
6.15  在Nexus One上測試目錄活動 179
6.16  小結 180
第7章  Android UI小部件:使用View類進行圖形設計 183
7.1  Android View類:UI小部件的基礎 184
7.2  View對象的基本屬性:ID、佈局定位和大小 185
7.3  View對象的定位特徵:邊距和填充 186
7.4  View對象的圖形屬性:背景、Alpha和可見性 188
7.5  View對象的功能特徵:偵聽器和焦點 189
7.6  創建書簽工具UI:使用RelativeLayout和TextView 190
7.7  使用ImageView小部件:圖形的基石 199
7.8  在Nexus One橫向模式下測試UI設計 205
7.9  給ImageView圖像資產添加陰影效果 206
7.10  更改ImageView XML以合並新資產 219
7.11  在RelativeLayout中合成背景圖像 221
7.12  小結 224
第8章  高級ImageView圖形設計 227
8.1  Android中的圖形:ImageView類的起源 227
8.2  ImageView.ScaleType嵌套類:縮放控件 228
8.3  使用AdjustViewBounds 231
8.4  maxWidth和maxHeight:控制AdjustViewBounds 232
8.5  在ImageView中設置基線並控制對齊方式 233
8.6  使用CropToPadding方法裁剪ImageView 234
8.7  給ImageView著色和使用PorterDuff混合顏色 234
8.8  將色調應用於SkyCloud圖像以改善陰影對比度 235
8.9  使用CropToPadding裁剪SkyCloud圖像資產 239
8.10  更改ImageView的基線對齊索引 243
8.11  執行圖像縮放:邊距和填充屬性 246
8.12  小結 250
第9章  高級ImageButton:創建自定義多狀態ImageButton 251
9.1  Android中的按鈕圖形:ImageButton類概述 251
9.2  ImageButton的狀態:正常、按下、焦點和懸停 252
9.3  ImageButton可繪制資產:合成按鈕狀態 253
9.4  可繪制的ImageButton:設置多狀態XML 261
9.5  創建所有ImageButton狀態資產:密度分辨率 265
9.6  將ImageButton縮放到與UI元素匹配的大小 270
9.7  小結 274
第10章  使用9-Patch技術創建可擴展的圖像元件 277
10.1  Android NinePatchDrawable類:NinePatch的基礎 277
10.2  關於9-Patch 278
10.3  Android NinePatch類:創建NinePatch資產 280
10.4  Draw 9-patch工具:創建NinePatchDrawable資產 281
10.5  使用XML標記實現NinePatch資產 292
10.6  小結 297
第11章  高級圖像混合:使用Android PorterDuff類 299
11.1  像素混合:使圖像合成更上一層樓 299
11.2  Android的PorterDuff類:混合的基礎 300
11.3  PorterDuff.Mode類:Android混合常量 301
11.4  PorterDuffColorFilter類:混合ColorFilter 305
11.5  使用PorterDuff將ColorFilter效果應用於圖像資產 305
11.6  PorterDuffXfermode類:應用混合常量 310
11.7  Paint類:將混合常量應用於圖像 311
11.8  使用Bitmap類在圖像之間應用PorterDuff 312
11.9  使用.setXfermode()方法應用PorterDuffXfermode 313
11.10  Canvas類:為合成創建畫布 314
11.11  用XML和Java創建ImageView以顯示畫布 317
11.12  通過.setBitmapImage()方法將Canvas寫入ImageView 319
11.13  小結 323
第12章  高級圖像合成:使用LayerDrawable類 325
12.1  LayerDrawable對象:將圖像合成提升到新的水平 325
12.2  Android的LayerDrawable類:圖層的基礎 326
12.3  父標簽:使用XML設置層 327
12.4  為PorterDuff合成實例化LayerDrawable 337
12.5  創建一個Drawable對象以容納LayerDrawable資產 338
12.6  將Drawable轉換為BitmapDrawable並提取位圖 339
12.7  修改PorterDuff管線以使用LayerDrawable 341
12.8  切換LayerDrawable圖像資產:從源到目標 343
12.9  更改管線中使用的LayerDrawable圖層 344
12.10  練習:使用兩個LayerDrawable資產 348
12.11  關於Android中數字圖像合成的一些意見和建議 348
12.12  小結 349
第13章  數字圖像切換:使用TransitionDrawable類 351
13.1  切換:混合圖像以創建運動幻覺 351
13.2  Android的TransitionDrawable類:切換引擎 352
13.3  父標簽:在XML中設置切換 353
13.4  實例化ImageButton和TransitionDrawable對象 360
13.5  使用.reverseTransition()方法進行乒乓切換 368
13.6  通過ImageView進行高級TransitionDrawable合成 370
13.7  小結 372
第14章  基於幀的動畫:使用AnimationDrawable類 375
14.1  AnimationDrawable類:幀動畫引擎 375
14.2  關於DrawableContainer類 376
14.3  使用Java創建AnimationDrawable啟動畫面 377
14.4  使用Android Runnable類運行動畫 378
14.5  為動畫創建setUpAnimation()方法 380
14.6  創建一個新的AnimationDrawable對象並引用其幀 381
14.7  使用AnimationDrawable類的.addFrame()方法 382
14.8  使用.setOneShot()方法配置AnimationDrawable 384
14.9  使用Handler類調度AnimationDrawable 385
14.10  設計AnimationDrawable以循環回到第1幀 387
14.11  添加事件處理以允許通過單擊播放幀動畫 388
14.12  小結 397
第15章  程序動畫:使用Animation類 399
15.1  關於Animation類:程序動畫引擎 399
15.2  關於TranslateAnimation類:用於移動的Animation子類 400
15.3  關於ScaleAnimation類:用於縮放的Animation子類 401
15.4  放大徽標:使用ScaleAnimation類 401
15.5  AlphaAnimation類:用於混合的Animation子類 406
15.6  製作PAG徽標淡入效果:使用AlphaAnimation類 407
15.7  AnimationSet類:創建復雜的動畫集 411
15.8  為PAG徽標動畫創建AnimationSet 412
15.9  RotateAnimation類:用於旋轉的Animation子類 418
15.10  旋轉PAG徽標:使用RotateAnimation類 418
15.11  使用Android Runnable類運行AnimationSet 421
15.12  為AnimationSet創建一個TranslateAnimation對象 421
15.13  小結 421
第16章  高級圖形:掌握Drawable類 423
16.1  Android Drawable資源:Drawable對象的類型 423
16.2  創建ShapeDrawable對象:XML 父標簽 426
16.3  Android Drawable類詳解 437
16.4  創建自定義Drawable:ImageRoundingDrawable 439
16.5  創建用於繪制Drawable畫布的Paint對象 441
16.6  Android Shader超類:用於繪圖的紋理貼圖 442
16.7  Shader.TileMode嵌套類:Shader平鋪模式 443
16.8  BitmapShader類:使用位圖的紋理映射 444
16.9  為Drawable對象創建和配置BitmapShader 445
16.10  Android Rect和RectF類:定義繪圖區域 450
16.11  定義RectF對象並調用.drawRoundRect()方法 451
16.12  Java InputStream類:讀取原始數據流 455
16.13  小結 458
第17章  交互式繪圖:交互式使用Paint和Canvas類 461
17.1  Android onDraw()方法:在屏幕上繪圖 461
17.2  Android Canvas類:數字工匠的畫布 462
17.3  Android Paint類:數字工匠的畫筆 463
17.4  為SketchPad設置GraphicsDesign項目 467
17.5  創建自定義View類:SketchPadView類 472
17.6  Android Context類詳解 474
17.7  配置SketchPadView()構造函數方法 476
17.8  創建坐標類以跟蹤觸摸X和Y點 479
17.9  Java List實用工具類:獲取有序集合 480
17.10  Java ArrayList實用工具類:集合列表數組 480
17.11  創建一個ArrayList對象以保存觸摸點數據 481
17.12  實現.onDraw()方法:繪制畫布 482
17.13  創建OnTouchListener()方法:事件處理 484
17.14  Android MotionEvent類:Android中的移動數據 485
17.15  處理移動數據:使用.getX()和.getY()方法 486
17.16  編寫SketchPad Activity的代碼:使用SketchPadView 488
17.17  測試SketchPad Activity類:手寫PAG徽標 491
17.18  使用位圖源進行繪圖:實現InkShader 492
17.19  小結 496
第18章  使用VideoView和MediaPlayer類播放視頻 497
18.1  視頻的生命:視頻播放生命周期的各個階段 497
18.2  視頻的存放位置:數據URI和Android的Uri類 498
18.3  Android MediaPlayer類:控制視頻播放 499
18.4  Android VideoView類:視頻資產容器 500
18.5  使用MediaPlayer類:無縫循環播放視頻 502
18.6  設置視頻資產縮放以適應任何屏幕寬高比 505
18.7  優化視頻資產分辨率目標的範圍 511
18.8  使用16∶9低分辨率640×360數字視頻資產 514
18.9  使用上網本分辨率1024×600數字視頻資產 515
18.10  使用低高清分辨率1280×720數字視頻資產 516
18.11  為iTV使用真高清1920×1080數字視頻資產 517
18.12  分析目標分辨率的壓縮結果 518
18.13  使用WebM VP8編解碼器壓縮偽高清視頻 520
18.14  使用WebM VP8編解碼器壓縮真高清視頻 521
18.15  小結 524
第19章  從外部媒體服務器流式傳輸數字視頻 527
19.1  設置Manifest Internet權限 527
19.2  使用遠程視頻:HTTP URL和URI 528
19.3  使用ProgressDialog類:顯示下載進度 530
19.4  在GraphicsDesign應用程序中實現ProgressDialog 531
19.5  測試進度對話框:處理編譯器錯誤 538
19.6  使用WebM VP8視頻編解碼器流傳輸數字視頻 542
19.7  使視頻播放應用知悉方向 544
19.8  Android Display類:物理顯示特徵 545
19.9  Android DisplayManager類:管理顯示 546
19.10  Android WindowManager接口:管理窗口 547
19.11  設置Display對象以確定設備旋轉 548
19.12  關於Android Surface類 551
19.13  使用.getRotation()方法調用來驅動switch循環 552
19.14  以縱向和橫向測試流視頻 554
19.15  關於在Android中使用數字視頻的一些註意事項 556
19.16  關於Android DisplayMetrics類 557
19.17  小結 558




相關書籍

Android Developer Tools Essentials: Android Studio to Zipalign (Paperback)

作者 Mike Wolfson

2022-02-01

App Inventor 2 程式設計與應用:開發 Android App 一學就上手, 5/e (附範例光碟)

作者 陳會安

2022-02-01

單一開發作業環境之美:Mac OS + Android Studio 超完美組合

作者 畢小朋

2022-02-01