您的位置:首页 > 其它

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

2016-07-28 15:55 316 查看
逐帧动画:

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) {

}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: