xamarin安卓开发中添加动画有好几种,这里归纳一下其中一种 interpolator,能够实现一些简单的平移、缩放、旋转、透明度变化等动画,基本够用了,做页面跳转可以用。
1,interpolator的分类
android:interpolator: 加速器,非常有用的属性,可以简单理解为动画的速度,可以是越来越快,也可以是越来越慢,或者是先快后忙,或者是均匀的速度等等,对于值如下:
|
alpha动画:
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:startOffset="500"
android:duration="2000"
/>
</set>scale动画:
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<scale
android:fromXScale="1.0"
android:toXScale="0.0"
android:fromYScale="1.0"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="2000"
/>
</set>rotate动画:
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<translate
android:fromXDelta="50%"
android:toXDelta="100%"
android:fromYDelta="50%"
android:toYDelta="100%"
android:duration="3000"
/>
</set>translate动画:<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<translate
android:fromXDelta="50%"
android:toXDelta="100%"
android:fromYDelta="50%"
android:toYDelta="100%"
android:duration="3000"
/>
</set>属性解释:
duration: 动画运行时间,定义在多次时间(ms)内完成动画
startOffset: 延迟一定时间后运行动画
fromXDelta: X轴方向开始位置,可以是%,也可以是具体的像素 具体见图
toXDelta: X轴方向结束位置,可以是%,也可以是具体的像素
fromYDelta: Y轴方向开始位置,可以是%,也可以是具体的像素
toYDelta: Y轴方向结束位置,可以是%,也可以是具体的像素
fromAlpha: 开始透明度toAlpha: 结束透明度
pivotX: 锚点x坐标
pivotY: 锚点y坐标
3,translate动画实例
示意图:
定义一个向上退出的动画(从位置2 移动位置3)和从下面进入(从位置1移动位置2)的动画定义文件如下:
注意xml写法跟上面不一样,单独的translate标签,没有套在set里
out_to_up.xml (从屏幕上面退出)
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromYDelta="0%p"
android:toYDelta="-100%p"
android:duration="1000">
</translate>in_from_down.xml (从屏幕下面进入)<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromYDelta="100%p"
android:toYDelta="0%p"
android:duration="1000">
</translate>上面动画可以用在activity切换上。
4,复合动画
可以再xml文件中定义多个Animation,这样多个Animation可以一起运行,例如:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:shareInterpolator="true"
>
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:startOffset="500"
android:duration="3000"
/>
<rotate
android:fromDegrees="0"
android:toDegrees="400"
android:pivotX="50%"
android:pivotY="50%"
android:duration="3000"
/>
</set> 各个动画效果可以用一个set标签叠加起来,达到更好的效果。
5,使用动画
定义一个动画,关联一个xml文件,然后调用某界面元素的StartAnimation函数
var in_animation = AnimationUtils.LoadAnimation(this, Resource.Animation.zoom_in); object.StartAnimation(in_animation);
原文地址:http://blog.csdn.net/u012234115/article/details/40325585