Android旋转动画

Posted on 2017-09-18 08:52  xl_phoenix  阅读(239)  评论(0编辑  收藏  举报

概述

Android的属性动画,可以让View有一个颜色的切换动画;可以使用3D旋转动画;当动画停止时,可以让View的位置就是当前的位置。

相关API

我们首先需要了解几个属性:

  • Duration动画的持续时间,默认300ms。
  • Time interpolation:时间差值,乍一看不知道是什么,但是我说LinearInterpolator、AccelerateDecelerateInterpolator,大家一定知道是干嘛的了,定义动画的变化率。
  • Repeat count and behavior:重复次数、以及重复模式;可以定义重复多少次;重复时从头开始,还是反向。
  • Animator sets: 动画集合,你可以定义一组动画,一起执行或者顺序执行。
  • Frame refresh delay:帧刷新延迟,对于你的动画,多久刷新一次帧;默认为10ms,但最终依赖系统的当前状态;基本不用管。

相关的类

  • ObjectAnimator 动画的执行类,后面详细介绍
  • ValueAnimator 动画的执行类,后面详细介绍
  • AnimatorSet 用于控制一组动画的执行:线性,一起,每个动画的先后执行等。
  • AnimatorInflater 用户加载属性动画的xml文件
  • TypeEvaluator 类型估值,主要用于设置动画操作属性的值。
  • TimeInterpolator 时间插值,上面已经介绍。

总的来说,属性动画就是,动画的执行类来设置动画操作的对象的属性、持续时间,开始和结束的属性值,时间差值等,然后系统会根据设置的参数动态的变化对象的属性。

ObjectAnimator实现旋转动画

布局代码,就一张图片

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    xmlns:tools="http://schemas.android.com/tools"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:id="@+id/id_container" >  
  
    <ImageView  
        android:id="@+id/id_ball"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_centerInParent="true"  
        android:src="@drawable/mv"   
        android:scaleType="centerCrop"  
        android:onClick="rotateyAnimRun"  
        />  
  
</RelativeLayout> 

Activity代码

public class ObjectAnimActivity extends Activity  
{  
    @Override  
    protected void onCreate(Bundle savedInstanceState)  
    {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.xml_for_anim);  
    }  
  
    public void rotateyAnimRun(View view)  
    {  
         ObjectAnimator//  
         .ofFloat(view, "rotationX", 0.0F, 360.0F)//  
         .setDuration(500)//  
         .start();  
    }  
  
} 

一行代码就可以实现图片旋转,效果如下所示:

image

更多关于属性动画请参考:Android 属性动画(Property Animation) 完全解析 (上)

Copyright © 2024 xl_phoenix
Powered by .NET 8.0 on Kubernetes