动画和图形概述
Android 提供了大量的强大的API以应用于UI动画和绘制2D和3D图形。下面各节向你描述了这些API的预览和系统能力以帮助你决定怎么才是达到你需求的最佳方法。
动画
Android 框架提供了两个动画系统: 两种动画系统都是切实可用的,但是一般情况下属性动画系统是被首推使用的。因为它更灵活并且提供了更多的特性。在此两系统之外,你还可以使用Drawable动画,它使得你可以加载drawable资源并且一帧帧的显示它们。
Property动画
从Android 3.0 (API level 11)开始引入,property动画系统使你可以动画一个对象的propertie,包括那些不能显示在屏幕上的对象。此系统是可扩展的并且也能让你动画自定义类型的propertie。
View动画
View 动画是旧的动画系统并且只能被用于View。它的建立相对容易并且提供了足够的能力来满足任何应用的需求。
Drawable动画
Drawable 动画一个接一个的显示Drawable 资源,就像放电影。
2D 和 3D 图形
当写一个应用时,仔细考虑你的图形需求是很重要的。不同的图形任务使用不同的技术实现。例如,图形和动画的实现对于一个静态应用与一个交互式游戏就差别很大。下面,我们将讨论一些在Android系统上的绘制图形的操作以及它们最适合的任务。
Canvas 和 Drawables
Android提供了一系列的 View widget,它们提供了丰富的用户界面功能。你也可以扩展这些widgets来改变它的们样子和行为。另外,你可以使用Canvas 类的丰富的绘制方法做你自己的2D图形或为纹理按钮或一帧接一帧的动画创建 Drawable 对象。
硬加速
从Android 3.0开始,你可以使用主流的Canvas API的硬加速功能大辐提高它们的性能。
OpenGL
Android 支持OpenGL ES 1.0和2.0,Android框架API和本地API(NDK)都支持。当你想为你的应用添加一些Canvas API不支持的增强功能时,或你希望不依赖于平台并且没有高性能需求时,应使用框架API。NDK与框架API之间有性能的差别,所以图形集中式的应用比如游戏,使用NDK 更佳(但是还要注意重要的一点,你仍然可以使用框架API达到高性能。比如,Google Body app就是完全用框架API实现的)。 NDK中的OpenGL还有一个用处是用于移植本地代码(比如C++代码)到Android。