参考链接:https://www.jianshu.com/p/d23f58f4368d
在android 3.0开始,系统提供一种全新的动画模式--属性动画。
下面是对属性动画代码展示。
1.平移
ObjectAnimator animator1 = ObjectAnimator.ofFloat(iv, "translationX", 0f, -300f, 0f);
2.透明度
ObjectAnimator animator2 = ObjectAnimator.ofFloat(iv, "alpha", 1f, 0f, 1f);
3.旋转
ObjectAnimator animator3 = ObjectAnimator.ofFloat(iv, "rotation", 0f, 360f, 0f);
4.缩放
ObjectAnimator animator4 = ObjectAnimator.ofFloat(iv, "scaleX", 1f, 2f, 1f);
//使用下面代码展示
animator.setDuration(2000);
animator.setStartDelay(1000);
animator.setRepeatCount(-1);
animator.start();
可以把上面的动画集合展示
AnimatorSet set = new AnimatorSet();
set.play(animator1).with(animator2).with(animator3).before(animator4);
//都设置3s,也可以为每个单独设置
set.setDuration(3000);
set.start();
也可使用xml文件展示动画。在res文件夹下创建animator文件夹。在文件夹下创建下列文件.
alpha.xml:
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="2000"
android:propertyName="alpha"
android:repeatCount="-1"
android:repeatMode="reverse"
android:valueFrom="0.5"
android:valueTo="1"
android:valueType="floatType"/>
rotation.xml:
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator
xmlns:android="http://schemas.android.com/apk/res/android"
android:valueFrom="0"
android:valueTo="360"
android:duration="2000"
android:propertyName="rotation"
android:valueType="floatType" />
scale_x.xml
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="2000"
android:propertyName="scaleX"
android:valueFrom="1"
android:valueTo="1.5"
android:valueType="floatType" />
translation_x.xml
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="2000"
android:propertyName="translationX"
android:repeatCount="-1"
android:repeatMode="reverse"
android:valueFrom="0"
android:valueTo="200"
android:valueType="floatType" />
动画集合 animset.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="sequentially">
<set>
<objectAnimator
android:duration="4000"
android:propertyName="rotation"
android:repeatMode="reverse"
android:valueFrom="0"
android:valueTo="360" />
<set android:ordering="sequentially">
<objectAnimator
android:duration="2000"
android:propertyName="translationX"
android:repeatMode="reverse"
android:valueFrom="0"
android:valueTo="200" />
<objectAnimator
android:duration="2000"
android:propertyName="translationX"
android:repeatMode="reverse"
android:valueFrom="200"
android:valueTo="0" />
</set>
</set>
<set >
<objectAnimator
android:duration="4000"
android:propertyName="rotation"
android:repeatMode="reverse"
android:valueFrom="0"
android:valueTo="360" />
<set android:ordering="sequentially">
<objectAnimator
android:duration="2000"
android:propertyName="translationX"
android:repeatMode="reverse"
android:valueFrom="0"
android:valueTo="-200" />
<objectAnimator
android:duration="2000"
android:propertyName="translationX"
android:repeatMode="reverse"
android:valueFrom="-200"
android:valueTo="0" />
</set>
</set>
</set>
使用代码加载并展示:
Animator animator = AnimatorInflater.loadAnimator(this, R.animator.alpha);
// Animator animator = AnimatorInflater.loadAnimator(this, R.animator.rotation);
// Animator animator = AnimatorInflater.loadAnimator(this, R.animator.scale_x);
// Animator animator = AnimatorInflater.loadAnimator(this, R.animator.translation_x);
// Animator animator = AnimatorInflater.loadAnimator(this, R.animator.animset);
animator.setTarget(iv);
animator.start();
网友评论