扣丁学堂——属性动画

一丶代码见本文

二丶演示效果(略)

三丶课程讲解


旋转


//图片x轴不变,转360度
  public void click(View view) {

        ObjectAnimator
                .ofFloat(view, "rotationX", 0.0f, 360.0f)
                .start();
    }


扣丁学堂——属性动画_第1张图片

 public void click(View view) {
        //多个动画组合
        PropertyValuesHolder p1 = PropertyValuesHolder.ofFloat("alpha", 1f, 0f, 1f);

        PropertyValuesHolder p2 = PropertyValuesHolder.ofFloat("scaleX", 1f, 0f, 1f);

        PropertyValuesHolder p3 = PropertyValuesHolder.ofFloat("scaleY", 1f, 0f, 1f);

        //view :作用在哪个组件上
        ObjectAnimator.ofPropertyValuesHolder(view, p1, p2, p3).setDuration(3000).start();
    }


扣丁学堂——属性动画_第2张图片

 /**
     * 自由落体
     * @param view
     */
    public void click(View view) {

        final View view1 = view;

        //获取屏幕高度 dm.heightPixels
        DisplayMetrics dm = new DisplayMetrics();

        getWindowManager().getDefaultDisplay().getMetrics(dm);


        //定义一个动画
        ValueAnimator valueAnimator =
                ValueAnimator.ofFloat(view.getY(), dm.heightPixels,view.getY()).setDuration(500);

        //监听动画的每一个动作
        valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {

                //可以将每一步动画设置在不同的组件上
                view1.setTranslationY((Float) animation.getAnimatedValue());


            }
        });

        valueAnimator.start();
    }


扣丁学堂——属性动画_第3张图片

 /**
     * 点击删除 这个组件
     *
     * @param view
     */
    public void click(View view) {
        ObjectAnimator alpha = ObjectAnimator
                .ofFloat(view, "alpha", 1f, 0f).setDuration(1000);


        final View v = view;

        //动画监听事件
        alpha.addListener(new Animator.AnimatorListener() {
            @Override
            public void onAnimationStart(Animator animation) {
                //动画开始


            }

            @Override
            public void onAnimationEnd(Animator animation) {
                //动画结束

                //获取当前 view的上一级
                ViewGroup viewGroup = (ViewGroup) v.getParent();

                if (viewGroup != null) {
                    viewGroup.removeView(v);//通过父级删除 view
                }
            }

            @Override
            public void onAnimationCancel(Animator animation) {
                //动画取消

            }

            @Override
            public void onAnimationRepeat(Animator animation) {

            }
        });

        alpha.start();
    }

//适配器删除组件
    /**
     * 点击删除 这个组件
     *
     * @param view
     */
    public void click(View view) {
        ObjectAnimator alpha = ObjectAnimator
                .ofFloat(view, "alpha", 1f, 0f).setDuration(1000);


        final View v = view;

        //动画监听事件
        alpha.addListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationEnd(Animator animation) {
                //动画结束

                //获取当前 view的上一级
                ViewGroup viewGroup = (ViewGroup) v.getParent();

                if (viewGroup != null) {
                    viewGroup.removeView(v);//通过父级删除 view
                }
            }

        });

        alpha.start();
    }




扣丁学堂——属性动画_第4张图片

  /**
     * 自定义动画 执行
     *
     * @param view
     */
    public void click(View view) {

        //定义动画
        ObjectAnimator a1 = ObjectAnimator.ofFloat(view, "translationX", 0f, 200f);

        ObjectAnimator a2 = ObjectAnimator.ofFloat(view, "translationY", 0f, 200f);

        ObjectAnimator a3 = ObjectAnimator.ofFloat(view, "rotation", 0.0f, 360.0f);

        AnimatorSet set = new AnimatorSet();

        set.setDuration(1000);
        set.setInterpolator(new BounceInterpolator());//插值 :系统内置的一些动画 :反弹效果
        //        set.playTogether(a1, a2, a3); //三个动画同时执行
        //        set.playSequentially(a1, a2, a3); //按序列执行
        //        set.setStartDelay(300);     //延迟执行

        //a1 a2 同时执行,之后 a3
        set.play(a1).with(a2);
        set.play(a3).after(a2);

        set.start();//启动动画
    }


扣丁学堂——属性动画_第5张图片

扣丁学堂——属性动画_第6张图片

//加载 xml动画文件
 /**
     * 使用 xml 定义动画
     *
     * @param view
     */
    public void click(View view) {

        ImageView iv = (ImageView) view;

        //实例化 xml定义的动画
        Animator animator = AnimatorInflater.loadAnimator(this, R.animator.test);

        //作用在哪个视图上
        animator.setTarget(iv);

        //开启动画
        animator.start();
    }



你可能感兴趣的:(android,属性动画)