package com.cheng.animationstudy.activity; import android.animation.Animator; import android.animation.AnimatorInflater; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.animation.AccelerateDecelerateInterpolator; import android.view.animation.AccelerateInterpolator; import android.view.animation.DecelerateInterpolator; import android.view.animation.LinearInterpolator; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.ImageView; import android.widget.RelativeLayout; import com.cheng.animationstudy.C; import com.cheng.animationstudy.R; import com.cheng.utils.ViewFinder; public class CommonPropertyAnimActivity extends AppCompatActivity { private ImageView mShowAnimIV; private ImageView mShowTransAnimIV; private ImageView mPoliceBoxIV; private ImageView mPoliceBoxLightIV; private RelativeLayout mPoliceBoxRL; private CheckBox mShowPoliceBoxCB; private CheckBox mShowTransAnimImgCB; private boolean mTestSwitch = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_commonpropertyanim); initView(); initListener(); } private void initView() { this.mShowAnimIV = ViewFinder.findViewById(this, R.id.iv_showanim); this.mShowTransAnimIV = ViewFinder.findViewById(this, R.id.iv_showtrananim); this.mPoliceBoxRL = ViewFinder.findViewById(this, R.id.rl_policebox); this.mPoliceBoxIV = ViewFinder.findViewById(this, R.id.iv_policebox); this.mPoliceBoxLightIV = ViewFinder.findViewById(this, R.id.iv_policeboxlight); this.mShowPoliceBoxCB = ViewFinder.findViewById(this, R.id.cb_changeimg); this.mShowTransAnimImgCB = ViewFinder.findViewById(this, R.id.cb_showtrananimimg); } public void showFlipOnVertical(View v) { switch (v.getId()) { case R.id.iv_policebox: case R.id.iv_policeboxlight: if (mTestSwitch) { ObjectAnimator objectAnimator3 = ObjectAnimator.ofFloat(mShowAnimIV, "alpha", 1.0f, 0.25f, 0.75f, 0.15f, 0.5f, 0.0f); objectAnimator3.setDuration(C.Int.ANIM_DURATION * 10); objectAnimator3.setInterpolator(new LinearInterpolator()); objectAnimator3.start(); } else { ObjectAnimator objectAnimator3_1 = ObjectAnimator.ofFloat(mPoliceBoxIV, "alpha", 1.0f, 1.0f, 0.25f, 0.75f, 0.15f, 0.5f, 0.0f); ObjectAnimator objectAnimator3_2 = ObjectAnimator.ofFloat(mPoliceBoxLightIV, "alpha", 0.0f, 1.0f, 0.0f, 0.75f, 0.0f, 0.5f, 0.0f); AnimatorSet animatorSet3 = new AnimatorSet(); animatorSet3.playTogether( objectAnimator3_1, objectAnimator3_2 ); animatorSet3.setDuration(C.Int.ANIM_DURATION * 5); animatorSet3.setInterpolator(new LinearInterpolator()); animatorSet3.start(); } mTestSwitch = !mTestSwitch; break; case R.id.btn_filponvertical: if (mTestSwitch) { Animator animator4 = AnimatorInflater.loadAnimator(this, R.animator.sda_flip_on_vertical); animator4.setTarget(mShowAnimIV); animator4.start(); } else { ObjectAnimator objectAnimator4 = ObjectAnimator.ofFloat(mShowAnimIV, "rotationY", 0.0f, 360.0f); objectAnimator4.setDuration(C.Int.ANIM_DURATION); objectAnimator4.start(); } mTestSwitch = !mTestSwitch; break; } } public void startTransAnimation(View v) { float scale = getResources().getDisplayMetrics().density; ObjectAnimator objectAnimator1 = ObjectAnimator.ofFloat(mShowTransAnimIV, "x", 20.0f*scale, 220.0f*scale); ObjectAnimator objectAnimator2 = ObjectAnimator.ofFloat(mShowTransAnimIV, "y", 20.0f*scale, 220.0f*scale); ObjectAnimator objectAnimator3 = ObjectAnimator.ofFloat(mShowTransAnimIV, "x", 220.0f*scale, 20.0f*scale); ObjectAnimator objectAnimator4 = ObjectAnimator.ofFloat(mShowTransAnimIV, "y", 220.0f*scale, 20.0f*scale); objectAnimator1.setDuration(C.Int.ANIM_DURATION); objectAnimator2.setDuration(C.Int.ANIM_DURATION); objectAnimator3.setDuration(C.Int.ANIM_DURATION * 2); objectAnimator4.setDuration(C.Int.ANIM_DURATION * 2); objectAnimator1.setInterpolator(new AccelerateInterpolator()); objectAnimator2.setInterpolator(new DecelerateInterpolator()); objectAnimator3.setInterpolator(new LinearInterpolator()); objectAnimator4.setInterpolator(new AccelerateDecelerateInterpolator()); AnimatorSet animatorSet = new AnimatorSet(); // Long version to set up animation set // animSet.play(anim1).before(anim2); // animSet.play(anim3).after(anim2); // animSet.play(anim3).with(anim4); // animSet.play(anim1).after(500); animatorSet.play(objectAnimator1).before(objectAnimator2).after(C.Int.ANIM_DURATION); animatorSet.play(objectAnimator3).after(objectAnimator2).with(objectAnimator4); animatorSet.start(); } private void initListener() { mShowPoliceBoxCB.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { mShowAnimIV.setVisibility(isChecked ? View.GONE : View.VISIBLE); mPoliceBoxRL.setVisibility(!isChecked ? View.GONE : View.VISIBLE); } }); mShowTransAnimImgCB.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { mShowAnimIV.setVisibility(isChecked ? View.GONE : View.VISIBLE); mPoliceBoxRL.setVisibility(isChecked ? View.GONE : View.VISIBLE); mShowTransAnimIV.setVisibility(!isChecked ? View.GONE : View.VISIBLE); } }); } }