美文网首页
安卓中基本的动画总结

安卓中基本的动画总结

作者: 码农陈小二 | 来源:发表于2017-11-09 19:02 被阅读58次

    安卓有三种基本的动画:

    1.帧动画
    2.补间动画
    3.属性动画(安卓3.0以后加入)

    帧动画

    帧动画是在drawable下新建一个xml文件,然后标签为animation-list,标签下是一个个item,然后将这个drawable设置为需要动画的view的background,最后在代码中找到这个动画,然后运行就好。

            img.setImageResource(R.drawable.xx);
            AnimationDrawable animationDrawable = (AnimationDrawable) img.getDrawable();
            animationDrawable.start();
    
    补间动画

    补间动画就是所谓的移动、旋转、缩放之类的操作。补间动画并不会改变view的真正位置,例如将一个button从位置A移动到位置B,假如button有点击事件,这时点击位置B并不会有反应,只有点击位置A才有触发点击时间。

    补间动画有两种实现方式:
    1.在res-anim 里新建xml文件,其中的标签对应将要进行的动画如:

    <?xml version="1.0" encoding="utf-8"?>
    <translate
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:toXDelta="100"
        android:toYDelta="100"
        android:duration="2000" 
        >
    
    </translate>
    

    需要注意的是,我这里的duration属性,studio没有提示,需要自己手动输入。然后在代码中实现动画

            Animation animation = AnimationUtils.loadAnimation(this, R.anim.xx);
            view.startAnimation(animation);
    

    2.当然,也可以不写xml文件,直接通过代码实现

            TranslateAnimation translateAnimation = new TranslateAnimation(
                    Animation.RELATIVE_TO_SELF, 0f,
                    Animation.ABSOLUTE, targetX,
                    Animation.RELATIVE_TO_SELF, 0f,
                    Animation.ABSOLUTE, targetY);
            translateAnimation.setDuration(2000);
            view.startAnimation(animation);
    
    属性动画

    属性动画有两个核心类ObjectAnimator以及ValueAnimator
    其中ValueAnimator需要我们自己去实现元素的更新

            ValueAnimator animator = ValueAnimator.ofInt(0, 100);  
            animator.setTarget(view);  
            animator.setDuration(1000).start();  
            animator.addUpdateListener(new AnimatorUpdateListener(){  
                @Override  
                public void onAnimationUpdate(ValueAnimator animation){  
                     view.setTranslationY((Float) animation.getAnimatedValue());  
                 }  
            });  
    

    而ObjectAnimator就简单多了

            ObjectAnimator
             .ofInt(view, "translateY", 0, 100)//  
             .setDuration(1000)//  
             .start();
    

    当然属性动画也可以在res-animator建立xml文件来实现动画。

    <?xml version="1.0" encoding="utf-8"?>
    <objectAnimator
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:valueFrom="0"
        android:valueTo="100"
        android:propertyName="translateY"
        android:duration="1000"
        >
    </objectAnimator>
    

    然后在代码中通过代码实现动画效果

            Animator animator = AnimatorInflater.loadAnimator(context, R.animator.xx); 
            animator.setTarget(view); //view表示我们要设置动画的对象
            animator.start();
    
    以上就是动画的初步总结了,方便以后忘的时候可以查到。

    相关文章

      网友评论

          本文标题:安卓中基本的动画总结

          本文链接:https://www.haomeiwen.com/subject/imsmmxtx.html