欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android动画小结

程序员文章站 2022-03-17 13:15:50
...
1.帧动画:将图片一张张的播放,从而达到一种动画效果。它容易产生OOM,使用中应该避免使用过多的尺寸较大的图片。
实现步骤
1.在res/drawable/目录下定义一个XML动画文件;
2.在Java代码中调用start()方法开启动画。
 Android动画小结

京东动画实现

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



protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_frame_animation);
        ImageView animationImg1 = (ImageView) findViewById(R.id.animation1);
         animationImg1.setImageResource(R.drawable.frame_anim1);
         AnimationDrawable animationDrawable1 = (AnimationDrawable) animationImg1.getBackground;
         animationDrawable1.start();
}


2.补间动画/View动画:可以对View实现透明度(对应AlphaAnimation类)、旋转(RotateAnimation)、
平移(TranslateAnimation)、缩放(ScaleAnimation)四种动画操作。
这四种动画既可以通过XML文件来定义,也可以通过代码动态创建。为了动画可读性更好,推荐使用XML文件来定义动画
使用步骤:
1.在res/anim/文件夹下定义一个动画资源文件;
2.在JAVA代码中按照如下方式加载这个动画。
eg:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="true">
<alpha
android:duration="300"
android:fromAlpha="0"
android:toAlpha="1" />
<rotate
android:duration="600"
android:fromDegrees="0"
android:toDegrees="90" />
<scale
android:duration="400"
android:fromXScale="0.5"
android:fromYScale="0.5"
android:toXScale="2"
android:toYScale="2" />
<translate
android:duration="100"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="100"
android:toYDelta="100" />
</set>

//            使用AnimationUtils工具类加载res/anim/下面的一个动画资源文件
Animation animation= AnimationUtils.loadAnimation(MainActivity.this,R.anim.alpha_animation);
/*
* 也可以使用JAVA代码创建动画
* AlphaAnimation animation = new AlphaAnimation(0, 1);
animation.setDuration(3000);
*
* */
// 对按钮进行动画操作
btn.startAnimation(animation);

3.属性动画API11新加入的特性,操作对象不限于View,而是对任意对象。它对应着三个类:ObjectAnimator(继承自ValueAnimatorValueAnimatorAnimatorSet(动画集)
可以在res/animator/下面定义一个属性动画的XML文件,但是有些对象的属性起始值无法预先知道,因此推荐在代码中动态创建
eg:
//           使用属性动画改变按钮的背景色,在3秒内实现颜色从蓝色渐变为绿色,动画会无限播放并且会有反转效果
                ObjectAnimator colorAnim=ObjectAnimator.ofInt(btn,"backgroundColor", Color.BLUE,Color.GREEN);
                colorAnim.setDuration(3000);
                colorAnim.setEvaluator(new ArgbEvaluator());
                colorAnim.setRepeatCount(ValueAnimator.INFINITE);
                colorAnim.setRepeatMode(ValueAnimator.REVERSE);
                colorAnim.start();