动画的实现

1、帧动画  -->  多张图片快速播放,形成动画效果 【FrameAnimation】
    用于耗时操作,默认一帧5ms
2、ImageView 既可以用 src 【设置内容】和 background【设置背景】
3、补间动画 -->【TweenAnimation】 为了让对象从初始状态向结束状态改变的过程更加自然而自动生成的动画效果
    AttributeSet 是系统调用的
4、属性动画 --> 【PropertyAnimation】属性动画是真正改变对象的某个属性的值, 补间动画,只是一个动画效果,组件其实还在原来的位置上,xy没有改变
    都是ObjectAnimator,不像补间动画动画一样,每个特性特定的方法
    --> 因为属性动画是真正改变对象的某个属性的值,所以动画播放完后不会复位 
    --> 单个属性动画一次只能改变单个属性
    --> 连续点击四个按钮也可以实现一起飞
5、
     //移动
    public void translate(View v) {
        //定义位移补间动画
        //组件的初始坐标移动到+10的位置,结束为组件的初始坐标+100
//        TranslateAnimation ta = new TranslateAnimation(10, 300, 0, 0);
        ta = new TranslateAnimation(Animation.RELATIVE_TO_SELF, -1.5f, Animation.RELATIVE_TO_SELF, 1.5f
                , Animation.RELATIVE_TO_SELF, -2, Animation.RELATIVE_TO_SELF, 2);
        //定义动画持续时间
        ta.setDuration(2000);
        //设置重复次数
        ta.setRepeatCount(1);
        //设置重复模式
        ta.setRepeatMode(Animation.REVERSE);
        //在结束位置填充动画
        ta.setFillAfter(true);
        //播放动画
        iv.startAnimation(ta);
    }
 
    //缩放
    public void scale(View v) {
//        ScaleAnimation sa = new ScaleAnimation(0.2f, 2, 0.2f,2);
//        ScaleAnimation sa = new ScaleAnimation(0.2f, 2, 0.2f,2,iv.getWidth()/2, iv.getHeight()/2);
        sa = new ScaleAnimation(0.3f, 2, 0.2f,1,
                Animation.RELATIVE_TO_PARENT,0.5f,Animation.RELATIVE_TO_PARENT,0.5f);
        //定义动画持续时间
        sa.setDuration(2000);
        //设置重复次数
        sa.setRepeatCount(1);
        //设置重复模式
        sa.setRepeatMode(Animation.REVERSE);
        //在结束位置填充动画
        sa.setFillAfter(true);
        //播放动画
        iv.startAnimation(sa);
    }
 
    //透明
    public void alpha(View v){
        aa = new AlphaAnimation(1,0.2f);
        //定义动画持续时间
        aa.setDuration(2000);
        //设置重复次数
        aa.setRepeatCount(1);
        //设置重复模式
        aa.setRepeatMode(Animation.REVERSE);
        //在结束位置填充动画
        aa.setFillAfter(true);
        //播放动画
        iv.startAnimation(aa);
    }
 
    //旋转
    public void rotate(View v){
//        RotateAnimation ra = new RotateAnimation(45,315);
//        RotateAnimation ra = new RotateAnimation(45, 315,iv.getWidth()/2,iv.getHeight()/2);
        ra = new RotateAnimation(45, -315,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
        //定义动画持续时间
        ra.setDuration(2000);
        //设置重复次数
        ra.setRepeatCount(1);
        //设置重复模式
        ra.setRepeatMode(Animation.REVERSE);
        //在结束位置填充动画
        ra.setFillAfter(true);
        //播放动画
        iv.startAnimation(ra);
    }
原文地址:https://www.cnblogs.com/tyzl/p/5452855.html