属性动画,逐帧动画,补间动画基本用法笔记

来源:互联网 发布:win10数据保护怎么关闭 编辑:程序博客网 时间:2024/06/05 14:49

逐帧动画:
xml:
item设置图片资源以及持续时间

<?xml version="1.0" encoding="utf-8"?><animation-list xmlns:android="http://schemas.android.com/apk/res/android"><item android:drawable="@drawable/f3" android:duration="3000"></item>    <item android:drawable="@drawable/f1"        android:duration="2000"></item>    <item android:drawable="@drawable/f2"        android:duration="1000"></item></animation-list>    <ImageView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/ff"        android:background="@drawable/flay"       />

java

   AnimationDrawable drawable;   ff= (ImageView) findViewById(R.id.ff);   //设置资源   drawable= (AnimationDrawable) ff.getBackground();   drawable.start();

补间动画:
分别为缩放,透明,旋转,位移,以及相关属性

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"><scale android:fromXScale="1.0"    android:toXScale="0.5"    android:fromYScale="1.0"    android:toYScale="0.5"    android:pivotX="50%"    android:pivotY="50%"    android:duration="8000"></scale>    <alpha        android:fromAlpha="1"        android:toAlpha="0.5"        android:duration="3000"></alpha>    <rotate        android:fromDegrees="0"        android:toDegrees="180"        android:pivotX="50%"        android:pivotY="50%"        android:duration="3000"></rotate>    <translate        android:fromXDelta="20"        android:toXDelta="800"        android:fromYDelta="30"        android:toYDelta="1300"        android:duration="8000"></translate></set>
 Animation anim; //加载资源  anim= AnimationUtils.loadAnimation(this,R.anim.anim);  //开始动画  ff.startAnimation(anib);

属性动画:
xml
有执行顺序和其它属性

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android">    <objectAnimator        android:duration="2000"        android:propertyName="translationX"        android:valueFrom="-500"        android:valueTo="10"        android:valueType="floatType" >    </objectAnimator>    <set android:ordering="together" >        <objectAnimator            android:duration="3000"            android:propertyName="rotation"            android:valueFrom="0"            android:valueTo="360"            android:valueType="floatType" >        </objectAnimator>        <set android:ordering="sequentially" >            <objectAnimator                android:duration="1500"                android:propertyName="alpha"                android:valueFrom="1"                android:valueTo="0"                android:valueType="floatType" >            </objectAnimator>            <objectAnimator                android:duration="1500"                android:propertyName="alpha"                android:valueFrom="0"                android:valueTo="1"                android:valueType="floatType" >            </objectAnimator>        </set>    </set></set><TextView    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:text="hahahahaaaa"    android:layout_centerInParent="true"    android:id="@+id/fram"/>

//加载资源,设置显示到的组件

 textview= (TextView) findViewById(R.id.fram); Animator animator = AnimatorInflater.loadAnimator(this, R.anim.fram);        animator.setTarget(textview);        animator.start();

属性动画代码实现:
//设置了动画的顺序,持续时间,以及监听。

    ObjectAnimator moveIn = ObjectAnimator.ofFloat(textview, "translationX", -500f, 0f);        ObjectAnimator rotate = ObjectAnimator.ofFloat(textview, "rotation", 0f, 360f);        ObjectAnimator fadeInOut = ObjectAnimator.ofFloat(textview, "alpha", 1f, 0f, 1f);        AnimatorSet animSet = new AnimatorSet();        animSet.play(rotate).with(fadeInOut).after(moveIn);        animSet.setDuration(5000);        animSet.start();        animSet.addListener(new Animator.AnimatorListener() {            @Override            public void onAnimationStart(Animator animation) {            }            @Override            public void onAnimationEnd(Animator animation) {            }            @Override            public void onAnimationCancel(Animator animation) {            }            @Override            public void onAnimationRepeat(Animator animation) {            }        });
0 0