Android 属性动画

类图

常用的属性

位置 translation

大小 scaleY scaleX

旋转角度 rotation 轴心 pivot

颜色 textColor backgroundColor

定义方式:

一、代码定义

package com.jinll.studywidget.test;

import android.animation.Animator;
import android.animation.AnimatorSet;
import android.animation.LayoutTransition;
import android.animation.ObjectAnimator;
import android.animation.TimeInterpolator;
import android.animation.ValueAnimator;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.jinll.studywidget.R;
import com.onetime.nww.util.ToastUtil;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

/**
 * Created by Jin Liang on 2018/9/17.
 */
public class AnimatorActivity extends AppCompatActivity {

    @BindView(R.id.textView4)
    TextView mTextView4;

    @BindView(R.id.textView5)
    TextView mTextView5;

    @BindView(R.id.imageView5)
    ImageView mImageView5;

    @BindView(R.id.imageView7)
    ImageView mImageView7;

    @BindView(R.id.ll_one)
    LinearLayout oneLl;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_animator_a);
        ButterKnife.bind(this);

        ValueAnimator valueAnimator = ValueAnimator.ofInt(0, 700);
        valueAnimator.setDuration(4000);
        valueAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
        valueAnimator.start();

        valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                float value = Float.valueOf((Integer)animation.getAnimatedValue());
                mTextView4.setTranslationX(value);
                mTextView4.setTranslationY(value);
            }
        });

        mImageView5.setPivotX(100);
        mImageView5.setPivotY(100);
        ObjectAnimator oa = ObjectAnimator.ofFloat(mImageView5, "rotation", 0f, 360f);
        oa.setDuration(2000);
        oa.start();

        ObjectAnimator o7 = ObjectAnimator.ofFloat(mImageView7, "scaleX", 0.2f, 1f);
        o7.setDuration(2500);
        o7.start();

        ValueAnimator va = ObjectAnimator.ofArgb(mTextView4, "backgroundColor", 0x0000000, 0xffaa4444);
        va.setDuration(4000);
        va.start();

        ValueAnimator va5 = ObjectAnimator.ofArgb(mTextView5, "textColor", 0x0000000, 0xffdd4444);
        va5.setDuration(4000);
        va5.start();
    }
}

 二、xml定义

类与标签对应关系:

ValueAnimator - <animator>
ObjectAnimator - <objectAnimator>
AnimatorSet - <set>

eg1

<set android:ordering="sequentially">
    <set>
        <objectAnimator
            android:propertyName="x"
            android:duration="500"
            android:valueTo="400"
            android:valueType="intType"/>
        <objectAnimator
            android:propertyName="y"
            android:duration="500"
            android:valueTo="300"
            android:valueType="intType"/>
    </set>
    <objectAnimator
        android:propertyName="alpha"
        android:duration="500"
        android:valueTo="1f"/>
</set>

AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(myContext,
    R.animator.property_animator);
set.setTarget(myObject);
set.start();

eg2

<animator xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:valueType="floatType"
    android:valueFrom="0f"
    android:valueTo="-100f" />



ValueAnimator xmlAnimator = (ValueAnimator) AnimatorInflater.loadAnimator(this,
        R.animator.animator);
xmlAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
    @Override
    public void onAnimationUpdate(ValueAnimator updatedAnimation) {
        float animatedValue = (float)updatedAnimation.getAnimatedValue();
        textView.setTranslationX(animatedValue);
    }
});

xmlAnimator.start();

 

posted @ 2018-09-18 16:42  杰出的鲜明  阅读(115)  评论(0编辑  收藏  举报