新書推薦:
《
唐宋绘画史 全彩插图版
》
售價:NT$
449.0
《
“御容”与真相:近代中国视觉文化转型(1840-1920)
》
售價:NT$
505.0
《
鸣沙丛书·大风起兮:地方视野和政治变迁中的“五四”(1911~1927)
》
售價:NT$
454.0
《
海洋、岛屿和革命:当南方遭遇帝国(文明的另一种声音)
》
售價:NT$
485.0
《
铝合金先进成型技术
》
售價:NT$
1214.0
《
英雄之旅:把人生活成一个好故事
》
售價:NT$
398.0
《
分析性一体的涌现:进入精神分析的核心
》
售價:NT$
556.0
《
火枪与账簿:早期经济全球化时代的中国与东亚世界
》
售價:NT$
352.0
|
編輯推薦: |
《Android高级图形程序设计》深入研究了与设备无关的像素图形设计、Android UI布局、Android UI小部件设计、高级ImageView图形设计、创建自定义多状态ImageButton、使用9-Patch技术创建可扩展的图像元件、使用Android PorterDuff类实现高级图像混合、使用LayerDrawable类实现高级图像合成、使用TransitionDrawable类实现数字图像切换、使用AnimationDrawable类创建基于帧的动画、使用Animation类创建程序动画、使用Paint和Canvas类创建用户交互式绘图程序、使用VideoView和MediaPlayer类播放视频等主题。
总之,对于Android图形开发人员,本书是不可多得的兼具知识性、启发性和实用性的技术宝典。
|
內容簡介: |
《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
|
內容試閱:
|
随着电子商务、手机游戏、在线视频、微信小程序和各种移动App开发的蓬勃兴起,Android前端设计的重要性也日益凸显。如何开发出画质精美而文件小巧的图像、动画和视频,并且同时可在包括手机、平板电脑、智能电视甚至智能手表在内的各种设备上进行显示和播放,是一个不小的挑战。本书就是为了帮助Android图形开发人员应对该挑战而编写的经验之作。
为了降低入门难度,本书采用了广受欢迎的Java和Eclipse ADT集成开发环境,然后从Android数字图像的格式和优化等知识开始,阐述了View图像容器、像素和宽高比、Alpha通道和混合模式等基础概念;在视频方面,介绍了数字视频格式、分辨率密度目标、编解码器和压缩、视频资产的引用等;在帧动画方面,演示了如何使用XML标记在Android中创建帧动画;在程序动画方面,阐释了补间动画的概念,实现了程序动画的旋转、缩放和Alpha混合等变换,并通过创建了更复杂的程序动画。
本书深入研究了与设备无关的像素图形设计、Android UI布局、Android UI小部件设计、高级ImageView图形设计、创建自定义多状态ImageButton、使用9-Patch技术创建可扩展的图像元件、使用Android PorterDuff类实现高级图像混合、使用LayerDrawable类实现高级图像合成、使用TransitionDrawable类实现数字图像切换、使用AnimationDrawable类创建基于帧的动画、使用Animation类创建程序动画、使用Paint和Canvas类创建用户交互式绘图程序、使用VideoView和MediaPlayer类播放视频等主题。
总之,对于Android图形开发人员,本书是不可多得的兼具知识性、启发性和实用性的技术宝典。
在翻译本书的过程中,为了更好地帮助读者理解和学习,以中英文对照的形式保留了大量的术语,这样的安排不但方便读者理解书中的代码,而且有助于读者通过网络查找和利用相关资源。
本书由周建娟翻译,唐盛、黄进青、陈凯、马宏华、黄刚、郝艳杰、黄永强、熊爱华也参与了本书的部分翻译工作。由于译者水平有限,不足之处在所难免,在此诚挚欢迎读者提出建议和意见。
译 者
|
|