美文网首页
属性动画

属性动画

作者: 倔强的晓亮 | 来源:发表于2018-11-21 20:23 被阅读0次

这是一个简单的属性动画

1.属性动画实现的效果非常相似于我们的补间动画,但事实又不同于我们的补间动画,他和补间动画最大的区别:属性动画真实的改变了控件的属性,而补间动画只是幻影而已,坦白来说就是补间的图片就是不动的,而属性动画则是移动的。

属性动画的定义有两种:1.一种静态的:创建在xml里去创建2.一种动态的:通过java代码去创建

case R.id.alpha_bt:

        //做透明动画

        ObjectAnimator alpha = ObjectAnimator.ofFloat(image, "alpha", new float[]{0.2f, 0.4f, 0.6f, 0.8f, 1.0f});

        //设置动画时间

        alpha.setDuration(4000);

        //设置动画的模式

        alpha.setRepeatMode(ObjectAnimator.RESTART);

        //设置动画的执行次数

        alpha.setRepeatCount(0);

        //使用objectAnimator开启动画

        alpha.start();

        break;

    case R.id.translationY_bt:

        //做平移动画

        ObjectAnimator translationY = ObjectAnimator.ofFloat(image, "translationY", new float[]{20f, 40f, 60f, 80f,120f});

        //设置动画时间

        translationY.setDuration(4000);

        //设置动画的模式

        translationY.setRepeatMode(ObjectAnimator.REVERSE);

        //设置执行次数

        translationY.setRepeatCount(0);

        //开启动画

        translationY.start();

        break;

    case R.id.scaleX_bt:

        //做缩放动画

        ObjectAnimator scale = ObjectAnimator.ofFloat(image, "scaleX", new float[]{1f, 2f, 3f, 4f,5f,6f,1f});

        //设置动画时间

        scale.setDuration(4000);

        //设置动画的模式

        scale.setRepeatMode(ObjectAnimator.REVERSE);

        //设置执行次数

        scale.setRepeatCount(0);

        //开启动画

        scale.start();

        break;

    case R.id.rotationY_bt:

        //做旋转动画

        ObjectAnimator rotationY = ObjectAnimator.ofFloat(image, "rotationY", new float[]{90f, 160f, 270f, 360f});

        //设置动画时间

        rotationY.setDuration(4000);

        //设置动画的模式

        rotationY.setRepeatMode(ObjectAnimator.REVERSE);

        //设置执行次数

        rotationY.setRepeatCount(0);

        //开启动画

        rotationY.start();

        break;

    case R.id.AnimatorSet_bt:

        AnimatorSet set = new AnimatorSet();

        ObjectAnimator scale1 = ObjectAnimator.ofFloat(image, "scaleX", new float[]{1f, 2f, 3f, 4f,5f,6f,1f});

        scale1.setDuration(4000);

        ObjectAnimator alpha1 = ObjectAnimator.ofFloat(image, "alpha", new float[]{0.2f, 0.4f, 0.6f, 0.8f, 1.0f});

        alpha1.setDuration(4000);

        set.playTogether(scale1,alpha1);

        set.start();

        break;

    case R.id.image:

        Toast.makeText(MainActivity.this,"点啦图片",Toast.LENGTH_SHORT).show();

        break;

}

public void saymit(View view) {

    WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);

    DisplayMetrics dm = new DisplayMetrics();

    wm.getDefaultDisplay().getMetrics(dm);

    int width = dm.widthPixels;        // 屏幕宽度(像素)

    int height = dm.heightPixels;      // 屏幕高度(像素)

    float density = dm.density;        // 屏幕密度(0.75 / 1.0 / 1.5)

    int densityDpi = dm.densityDpi;    // 屏幕密度dpi(120 / 160 / 240)

    // 屏幕宽度算法:屏幕宽度(像素)/屏幕密度

    float screenWidth =  (width / density);  // 屏幕宽度(dp)

    float screenHeight =  (height / density);// 屏幕高度(dp)

    ObjectAnimator translationY = ObjectAnimator.ofFloat(heart, "translationY", new float[]{0f,screenHeight});

    translationY.setDuration(5000);

    translationY.start();

    ObjectAnimator translationX = ObjectAnimator.ofFloat(heart, "translationX", new float[]{0f,-screenWidth});

    translationX.setDuration(5000);

    translationX.start();

    ObjectAnimator alpha = ObjectAnimator.ofFloat(heart, "alpha", new float[]{1.0f, 0.8f, 0.6f, 0.2f, 0f});

    alpha.setDuration(5000);

    alpha.start();

    translationY.addListener(new Animator.AnimatorListener() {

        @Override

        public void onAnimationStart(Animator animator) {

        }

        @Override

        public void onAnimationEnd(Animator animator) {

            heart1.setVisibility(View.VISIBLE);

        }

        @Override

        public void onAnimationCancel(Animator animator) {

        }

        @Override

        public void onAnimationRepeat(Animator animator) {

        }

    });

相关文章

  • 属性动画学习使用总结

    Android 属性动画总结 属性动画的优点 属性动画的使用步骤 实例化属性动画对象 设置属性动画的时长 启动属性...

  • [Android动画]属性动画-小球下落动画实现

    属性动画 属性动画是通过直接改变View属性,实现的动画效果。与补间动画不同的是,属性动画是对象的属性的真实改变,...

  • Android动画-属性动画

    属性动画 所谓属性动画,就是改变对象Object的属性来实现动画过程。属性动画是对View的动画的扩展,通过它可以...

  • 动画之属性动画基础篇

    属性动画 属性动画,改变view或者object的属性实现动画,属性动画比补间动画更强大,不但可以实现旋转、平移等...

  • UI(四十八)属性动画

    属性动画->通过改变图层或者视图上面的属性值(支持动画的属性)产生的动画 属性动画的常用方法属性: 1、初始化 +...

  • iOS - 属性动画

    属性动画->通过改变图层或者视图上面的属性值(支持动画的属性)产生的动画 属性动画的常用方法属性: 1、初始化+(...

  • Android 动画

    动画类型 视图动画(补间动画、逐帧动画)属性动画 补间动画 逐帧动画 属性动画 对比 插值器:确定属性值从初始值过...

  • Android Animation 动画介绍与详解

    一、Animation 动画属性 动画相关的属性:SET属性 二、Animation 动画类型 Android的a...

  • 如何在网页中做出炫酷的动画(使用Spine)

    属性动画和帧动画 web中的动画主要分为属性动画和帧动画两种,属性动画是通过改变dom元素的属性如宽高、字体大小或...

  • 属性动画案例二(加载动画)

    继续属性动画,之前写过 属性动画案例一(基础动画与飘心动画) 简单了解了属性动画,这次来点炫酷的~加载动画,先看一...

网友评论

      本文标题:属性动画

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