纵有疾风起
人生不言弃

Android Studio 三种方式建立动画效果

Property animation

文件位置/res/anitor/filename.xml

In Java: R.animator.filename
In XML: @[package:]animator/filename

语法

<set<!--选择是一起执行动画还是按照顺序来-->android:ordering=["together" | "sequentially"]><objectAnimator <!--图像的动画名称来规定属性比如backgroudcolor-->    android:propertyName="string" <!--指定播放时间-->    android:duration="int" <!--指定从哪里开始具体的要根据你指定的propertyName-->    android:valueFrom="float | int | color" <!--制定从哪里结束具体的要根据你指定的propertyName-->    android:valueTo="float | int | color" <!--比开始偏移多少也可以理解为延时-->    android:startOffset="int" <!--重复次数比如1是重复两次-->    android:repeatCount="int" <!--重复模式-->    android:repeatMode=["repeat" | "reverse"] <!--默认使用floatType建议不要更改-->    android:valueType=["intType" | "floatType"]/><animator    android:duration="int"    android:valueFrom="float | int | color"    android:valueTo="float | int | color"    android:startOffset="int"    android:repeatCount="int"    android:repeatMode=["repeat" | "reverse"]    android:valueType=["intType" | "floatType"]/><set>    ...</set></set>

一个简单的例子

新建一个res/anitor/test.xml

    <?xml version="1.0" encoding="utf-8"?>  <set xmlns:android="http://schemas.android.com/apk/res/android"android:ordering="sequentially">    <!--dd-->    <objectAnimator        android:propertyName="rotation"        android:duration="2000"        android:repeatCount="1"        android:repeatMode="reverse"        android:valueFrom="0"        android:valueTo="720"/>    <objectAnimator        android:propertyName="rotation"        android:duration="2000"        android:repeatCount="1"        android:startOffset="1000"        android:repeatMode="reverse"        android:valueFrom="0"        android:valueTo="720"/>  </set>

在MainActivity.class中

  btn.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View view) {            AnimatorSet animatorSet =   (AnimatorSet)AnimatorInflater.loadAnimator(MainActivity.this, R.animator.test);            animatorSet.setTarget(imageView);            animatorSet.start();        }    });

Tween animation

文件存储位置

res/anim/filename.xml
In Java: R.anim.filename
In XML: @[package:]anim/filename

语法

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"android:interpolator="@[package:]anim/interpolator_resource"android:shareInterpolator=["true" | "false"] > <!--渐变--><alpha    android:fromAlpha="float"    android:toAlpha="float" /> <!--缩放--><scale    android:fromXScale="float"    android:toXScale="float"    android:fromYScale="float"    android:toYScale="float"    android:pivotX="float"    android:pivotY="float" /> <!--位置移动--><translate    android:fromXDelta="float"    android:toXDelta="float"    android:fromYDelta="float"    android:toYDelta="float" /> <!--翻转--><rotate    android:fromDegrees="float"    android:toDegrees="float"    android:pivotX="float"    android:pivotY="float" /><set>    ...</set> </set>

一个简单的例子

  <?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"android:duration="10000"android:shareInterpolator="true"><alpha    android:fromAlpha="0"    android:toAlpha="100"/><translate    android:fromXDelta="100"    android:toXDelta="200"/><translate    android:fromXDelta="0"    android:toXDelta="100"    android:fromYDelta="0"    android:toYDelta="100"/><rotate    android:fromDegrees="0"    android:pivotY="50%"    android:pivotX="50%"    android:toDegrees="360"/>

</set>

MainActivity.class

btn.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View view) {            Animation animation =   AnimationUtils.loadAnimation(MainActivity.this, R.anim.test);            imageView.startAnimation(animation);        }    });

Frame animation

文件位置

res/drawable/filename.xml
In Java: R.drawable.filename
In XML: @[package:]drawable.filename

语法

<?xml version="1.0" encoding="utf-8"?><animation-list xmlns:android="http://schemas.android.com/apk/res/android"<!---true代表一次false代表一直-->android:oneshot=["true" | "false"] ><item    android:drawable="@[package:]drawable/drawable_resource_name"    android:duration="integer" /></animation-list>

一个简单的例子

<?xml version="1.0" encoding="utf-8"?><animation-list xmlns:android="http://schemas.android.com/apk/res/android">    <item android:drawable="@drawable/ic_launcher_background" android:duration="1000"/>    <item android:drawable="@drawable/ic_launcher_foreground" android:duration="1000"/></animation-list>

MainActivity.class

   btn.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View view) {            imageView.setImageResource(R.drawable.test);            AnimationDrawable animationDrawable =   (AnimationDrawable)imageView.getDrawable();            animationDrawable.start();        }    });

文章转载于:https://www.jianshu.com/p/d592f9c62059

原著是一个有趣的人,若有侵权,请通知删除

未经允许不得转载:起风网 » Android Studio 三种方式建立动画效果
分享到: 生成海报

评论 抢沙发

评论前必须登录!

立即登录