码迷,mamicode.com
首页 > 移动开发 > 详细

Xamarin安卓开发:动画Interpolator

时间:2014-10-21 01:05:12      阅读:370      评论:0      收藏:0      [点我收藏+]

标签:xamarin   安卓   

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


1interpolator的分类

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

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


2几种动画

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坐标


3translate动画实例

示意图:

bubuko.com,布布扣




定义一个向上退出的动画(从位置移动位置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);

Xamarin安卓开发:动画Interpolator

标签:xamarin   安卓   

原文地址:http://blog.csdn.net/u012234115/article/details/40325585

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!