Xamarin安卓开发:动画Interpolator


Xamarin安卓开发:动画Interpolator

xamarin.android


xamarin安卓开发中添加动画有好几种,这里归纳一下其中一种 interpolator,能够实现一些简单的平移、缩放、旋转、透明度变化等动画,基本够用了,做页面跳转可以用。

1,interpolator的分类
Android:interpolator: 加速器,非常有用的属性,可以简单理解为动画的速度,可以是越来越快,也可以是越来越慢,或者是先快后忙,或者是均匀的速度等等,对于值如下:

  1. @android:anim/accelerate_interpolator 越来越快
  2. @android:anim/decelerate_interpolator:越来越慢
  3. @android:anim/accelerate_decelerate_interpolator:先快后慢
  4. @android:anim/anticipate_interpolator: 先后退一小步然后向前加速
  5. @android:anim/overshoot_interpolator:快速到达终点超出一小步然后回到终点
  6. @android:anim/anticipate_overshoot_interpolator:到达终点超出一小步然后回到终点
  7. @android:anim/bounce_interpolator:到达终点产生弹球效果,弹几下回到终点
  8. @android:anim/linear_interpolator:均匀速度。

2,几种动画
alpha动画:

  1. <set xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:interpolator="@android:anim/accelerate_interpolator">
  3. <alpha
  4. android:fromAlpha="1.0"
  5. android:toAlpha="0.0"
  6. android:startOffset="500"
  7. android:duration="2000"
  8. />
  9. </set>

scale动画:

  1. <set xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:interpolator="@android:anim/accelerate_interpolator">
  3. <scale
  4. android:fromXScale="1.0"
  5. android:toXScale="0.0"
  6. android:fromYScale="1.0"
  7. android:toYScale="0.0"
  8. android:pivotX="50%"
  9. android:pivotY="50%"
  10. android:duration="2000"
  11. />
  12. </set>

rotate动画:

  1. <set xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:interpolator="@android:anim/accelerate_interpolator">
  3. <translate
  4. android:fromXDelta="50%"
  5. android:toXDelta="100%"
  6. android:fromYDelta="50%"
  7. android:toYDelta="100%"
  8. android:duration="3000"
  9. />
  10. </set>

translate动画:

  1. <set xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:interpolator="@android:anim/accelerate_interpolator">
  3. <translate
  4. android:fromXDelta="50%"
  5. android:toXDelta="100%"
  6. android:fromYDelta="50%"
  7. android:toYDelta="100%"
  8. android:duration="3000"
  9. />
  10. </set>

属性解释:
duration: 动画运行时间,定义在多次时间(ms)内完成动画

startOffset: 延迟一定时间后运行动画

fromXDelta: X轴方向开始位置,可以是%,也可以是具体的像素 具体见图

toXDelta: X轴方向结束位置,可以是%,也可以是具体的像素

fromYDelta: Y轴方向开始位置,可以是%,也可以是具体的像素

toYDelta: Y轴方向结束位置,可以是%,也可以是具体的像素

fromAlpha: 开始透明度
toAlpha: 结束透明度
pivotX: 锚点x坐标
pivotY: 锚点y坐标

3,translate动画实例
示意图:

20141021000717093.png-32.6kB

定义一个向上退出的动画(从位置2 移动位置3)和从下面进入(从位置1移动位置2)的动画定义文件如下:

注意xml写法跟上面不一样,单独的translate标签,没有套在set里

out_to_up.xml (从屏幕上面退出)

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <translate xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:interpolator="@android:anim/accelerate_interpolator"
  4. android:fromYDelta="0%p"
  5. android:toYDelta="-100%p"
  6. android:duration="1000">
  7. </translate>

in_from_down.xml (从屏幕下面进入)

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <translate xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:interpolator="@android:anim/accelerate_interpolator"
  4. android:fromYDelta="100%p"
  5. android:toYDelta="0%p"
  6. android:duration="1000">
  7. </translate>

上面动画可以用在activity切换上。

4,复合动画
可以再xml文件中定义多个Animation,这样多个Animation可以一起运行,例如:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <set xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:interpolator="@android:anim/accelerate_interpolator"
  4. android:shareInterpolator="true"
  5. >
  6. <alpha
  7. android:fromAlpha="1.0"
  8. android:toAlpha="0.0"
  9. android:startOffset="500"
  10. android:duration="3000"
  11. />
  12. <rotate
  13. android:fromDegrees="0"
  14. android:toDegrees="400"
  15. android:pivotX="50%"
  16. android:pivotY="50%"
  17. android:duration="3000"
  18. />
  19. </set>

各个动画效果可以用一个set标签叠加起来,达到更好的效果。

5,使用动画
定义一个动画,关联一个xml文件,然后调用某界面元素的StartAnimation函数

  1. var in_animation = AnimationUtils.LoadAnimation(this, Resource.Animation.zoom_in);
  2. object.StartAnimation(in_animation);

作者:踏莎行hyx
原文地址:http://blog.csdn.net/u012234115/article/details/40325585?utm_source=tuicool&utm_medium=referral

分享到