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

Wallace Jackson 周建娟 譯

  • Android 高級圖形程序設計 (Pro Android Graphics)-preview-1
  • Android 高級圖形程序設計 (Pro Android Graphics)-preview-2
  • Android 高級圖形程序設計 (Pro Android Graphics)-preview-3
Android 高級圖形程序設計 (Pro Android Graphics)-preview-1

買這商品的人也買了...

商品描述

《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 <animation-list>標記:父幀容器 73

3.5  Android的<item>標記:指定動畫幀 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  <set>標記:使用XML對程序動畫進行分組 101

4.8  程序動畫與幀動畫:權衡 103

4.9  在GraphicsDesign應用中創建程序動畫的構思 104

4.10  使用XML創建程序動畫定義 104

4.11  在MainActivity.java中實例化Animation對象 109

4.12  使用<set>創建更復雜的程序動畫 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  通過<supports-screens>標簽支持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  <layer-list>父標簽:使用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  <transition>父標簽:在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 <shape>父標簽 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