主界面 package com.example.dell.animator; import android.animation.ObjectAnimator; import android.animation.ValueAnimator; import android.os.Build; import android.support.annotation.RequiresApi; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ImageView; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private ImageView button; private Button click1; private Button click2; private Button click3; private Button click4; private ObjectAnimator objectAnimator; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate( savedInstanceState ); setContentView( R.layout.activity_main ); button = findViewById( R.id.but_1 ); click1 = findViewById( R.id.but_click1 ); click2 = findViewById( R.id.but_click2 ); click3 = findViewById( R.id.but_click3 ); click4 = findViewById( R.id.but_click4 ); click1.setOnClickListener( this ); click2.setOnClickListener( this ); click3.setOnClickListener( this ); click4.setOnClickListener( this ); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.but_click1: trance(); break; case R.id.but_click2: rotation(); break; case R.id.but_click3: alpha(); break; case R.id.but_click4: argb(); break; } } private void argb() { final ValueAnimator valueAnimator = ValueAnimator.ofFloat( 0, (float) 0.5,1 ); valueAnimator.setDuration( 3000 ); valueAnimator.start(); valueAnimator.addUpdateListener( new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { button.setScaleX( (Float) valueAnimator.getAnimatedValue() ); button.setScaleY( (Float) valueAnimator.getAnimatedValue() ); } } ); } private void alpha() { /*final ValueAnimator valueAnimator = ValueAnimator.ofFloat(0,1,1); valueAnimator.setDuration( 3000 ); valueAnimator.start(); valueAnimator.addUpdateListener( new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { //button.setRotation( (Float) valueAnimator.getAnimatedValue() ); button.setAlpha( (Float) valueAnimator.getAnimatedValue() ); } } );*/ ObjectAnimator objectAnimator = ObjectAnimator.ofFloat( button, "alpha", 0, 1 ); objectAnimator.setDuration( 3000 ); objectAnimator.start(); } private void rotation() { /*final ValueAnimator valueAnimator = ValueAnimator.ofFloat( 0, 200,400,200,0 ); valueAnimator.setDuration( 3000 ); valueAnimator.start(); valueAnimator.addUpdateListener( new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { //button.setRotation( (Float) valueAnimator.getAnimatedValue() ); button.setRotationX( (Float) valueAnimator.getAnimatedValue() ); button.setRotationY( (Float) valueAnimator.getAnimatedValue() ); } } );*/ objectAnimator = ObjectAnimator.ofFloat( button, "rotationY", 0, 500,0 ); objectAnimator.setDuration( 3000 ); objectAnimator.start(); } private void trance() { //ValueAnimtor 动画 父类 继承自Animator /* final ValueAnimator valueAnimator = ValueAnimator.ofFloat( 0, 200,0,400); valueAnimator.setDuration( 3000 ); valueAnimator.start(); valueAnimator.addUpdateListener( new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { button.setTranslationX( (Float) valueAnimator.getAnimatedValue() ); button.setTranslationY( (Float) valueAnimator.getAnimatedValue() ); } } );*/ //ObjectAnimator继承自ValueAnimtor ObjectAnimator objectAnimator = ObjectAnimator.ofFloat( button, "translationX", 0, 500,0 ); objectAnimator.setDuration( 3000 ); objectAnimator.start(); } }
//布局文件
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <ImageView android:id="@+id/but_1" android:layout_width="50dp" android:layout_height="50dp" android:background="@drawable/shape" /> <LinearLayout android:layout_alignParentBottom="true" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/but_click1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="平移" /> <Button android:id="@+id/but_click2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="旋转" /> <Button android:id="@+id/but_click3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="淡入" /> <Button android:id="@+id/but_click4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="渐变" /> </LinearLayout> </RelativeLayout>