博客分类: 官方教程
返回索引目录
原文链接: Graphics and Animation
译文链接: Xamarin.Android应用基础——图形和动画
本文内容为关于Xamarin.Android中的图形和动画简介
Android中提供了一个非常丰富和多样化的框架来支持2D图形和动画。本文将介绍这些框架,并讨论如何在Xamarin.Android应用中创建及使用自定义图形和动画。
用户喜欢在应用中移动的东西。动画是改善一个应用用户体验及辅助突出它的一个好方法。最好的动画是 那些用户不会注意到的 —— 因为他们 会觉得很自然。Android提供了以下三个API来支持动画:
一般来说,属性动画是首选的系统,因为它更灵活,并且提供更多的功能。
视图动画仅限于视图,且只能针对值执行动画(如起终点、大小、旋转和透明度)。这些类型动画通常叫做补间动画。视图动画 可以有两种方式来定义:代码编程方式 和XML文件声明方式。XML文件声明方式是视图动画的首选方式,因为它们更易于阅读与维护。
XML文件动画定义将存储在Xamarin.Android项目的 /Resources/anim
目录中。此文件中必须用以下几个元素中的一个作为根元素:
默认情况下,XML文件中的所有动画都将同时应用。要使动画按照一定的顺序发送,则需要在 上面例举的几个元素中设置 android:startOffset
属性。
我们可以通过使用一个内插器(interpolator)来影响动画的变化速度。内插器可以用于加速动画、重复动画或者减速动画。Android框架中提供了几个内置的内插器,例如:—— 只例举部分
下面的XML内容展示了一个组合多个动画的动画文件的示例:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <scale android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:fromXScale="1.0" android:toXScale="1.4" android:fromYScale="1.0" android:toYScale="0.6" android:pivotX="50%" android:pivotY="50%" android:fillEnabled="true" android:fillAfter="false" android:duration="700" /> <set android:interpolator="@android:anim/accelerate_interpolator"> <scale android:fromXScale="1.4" android:toXScale="0.0" android:fromYScale="0.6" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:fillEnabled="true" android:fillBefore="false" android:fillAfter="true" android:startOffset="700" android:duration="400" /> <rotate android:fromDegrees="0" android:toDegrees="-45" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:fillEnabled="true" android:fillBefore="false" android:fillAfter="true" android:startOffset="700" android:duration="400" /> </set> </set>
此动画将同时执行所有动画内容。其中第一个scale动画将水平拉伸图片并垂直压缩图片,然后图像将同时 逆时针旋转45度角并缩小、最后从屏幕中消失。
动画可以使用编程方式应用到视图(先为动画填充具体内容,然后将其应用到视图)。Android提供了一个辅助类Android.Views.Animations.AnimationUtils 来将填充动画资源,并返回一个Android.Views.Animations.Animation实例。此对象可以通过调用StartAnimation并传递Animation对象来应用到视图。以下代码段展示了一个示例:
Animation myAnimation = AnimationUtils.LoadAnimation(this,Resource.Animation.MyAnimation); ImageView myImage = FindViewById<ImageView>(Resource.Id.imageView1); myImage.StartAnimation(myAnimation);
现在我们已经基本了解了视图动画是如何工作的,下面看看属性动画内容。
译: 奇葩史