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();