美文网首页
2020-05-27-Android属性动画

2020-05-27-Android属性动画

作者: 耿望 | 来源:发表于2020-05-27 11:19 被阅读0次

属性动画

属性动画支持在xml文件中定义,便于代码复用。
下面先给出一个最简单的ValueAnimator例子。
我们需要在res/animator目录下新建一份property.xml文件

<animator xmlns:android="http://schemas.android.com/apk/res/android"
    android:valueType="intType"
    android:valueTo="30dp"
    android:valueFrom="300dp"
    android:duration="1000"
    android:startOffset="100"
    android:repeatCount="3"
    android:repeatMode="reverse"/>

然后在java中通过AnimatorInflater.loadAnimator方法load这份文件。


    private ImageView imageView;
    private ValueAnimator valueAnimator;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_movie);
        imageView = findViewById(R.id.animatorImg);
        valueAnimator = (ValueAnimator) AnimatorInflater.loadAnimator(this, R.animator.property);
        imageView.setOnClickListener(new clickUpdate());
    }

然后定义一个回调,可以在动画过程中改变view的属性值。

    private class valueUpdate implements ValueAnimator.AnimatorUpdateListener {

        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            int current = (int) animation.getAnimatedValue();
            imageView.getLayoutParams().height = current;
            imageView.getLayoutParams().width = current;
            imageView.requestLayout();
        }
    }

最后为该view定义一个点击效果,每次点击会执行一个缩放动画。

    private class clickUpdate implements View.OnClickListener {

        @Override
        public void onClick(View v) {
            scaleImg();
        }
    }
    private void scaleImg() {
        valueAnimator.addUpdateListener(new valueUpdate());
        valueAnimator.start();
    }

还有一种ObjectAnimator继承了ValueAnimator。
我们可以在XML中指定需要修改的属性,而不需要在代码中使用回调,更加简单。
下面给出一个例子,设置图片的透明度从0.1到1.0渐变。

<objectAnimator
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:propertyName="alpha"
    android:valueTo="0.1f"
    android:valueFrom="1.0f"
    android:valueType="floatType"
    android:duration="1000"
    android:repeatCount="3"
    android:repeatMode="reverse"
    android:startOffset="100"/>
private ObjectAnimator objectAnimator;
objectAnimator = (ObjectAnimator) AnimatorInflater.loadAnimator(this, R.animator.property_animator);
        objectAnimator.setTarget(imageView);
objectAnimator.start();

参考

属性动画概览
动画资源
Android属性动画解析和实例

相关文章

  • 2020-05-27-Android属性动画

    属性动画 属性动画支持在xml文件中定义,便于代码复用。下面先给出一个最简单的ValueAnimator例子。我们...

  • 属性动画学习使用总结

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

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

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

  • Android动画-属性动画

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

  • 动画之属性动画基础篇

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

  • UI(四十八)属性动画

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

  • iOS - 属性动画

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

  • Android 动画

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

  • Android Animation 动画介绍与详解

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

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

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

网友评论

      本文标题:2020-05-27-Android属性动画

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