/res/animator/fade_in.xml
<set xmlns:android="http://schemas.android.com/apk/res/android" android:ordering="sequentially" > <objectAnimator android:duration="1000" android:propertyName="alpha" android:valueFrom="0.0" android:valueTo="1.0" android:interpolator="@android:anim/accelerate_interpolator"/> </set>
/res/animator/fade_out.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <objectAnimator android:duration="1000" android:propertyName="alpha" android:valueFrom="1.0" android:valueTo="0.0" android:interpolator="@android:anim/accelerate_interpolator"/> </set>
MainActivity.java
public class MainActivity extends AppCompatActivity { Button buttonFadeIn,buttonFadeOut,buttonBlink,buttonZoomIn,buttonZoomOut,buttonRotate,buttonMove,buttonSlideUp, buttonSlideDown,buttonBounce; TextView textViewFadeIn,textViewFadeOut,textViewBlink,textViewZoomIn,textViewZoomOut,textViewRotate,textViewMove,textViewSlideUp, textViewSlideDown,textViewBounce; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); buttonFadeIn= (Button) findViewById(R.id.buttonFadeIn); buttonFadeOut= (Button) findViewById(R.id.buttonFadeOut); buttonBlink= (Button) findViewById(R.id.buttonBlink); buttonZoomIn= (Button) findViewById(R.id.buttonZoomIn); buttonZoomOut= (Button) findViewById(R.id.buttonZoomOut); buttonRotate= (Button) findViewById(R.id.buttonRotate); buttonMove= (Button) findViewById(R.id.buttonMove); buttonSlideUp= (Button) findViewById(R.id.buttonSlideUp); buttonSlideDown= (Button) findViewById(R.id.buttonSlideDown); buttonBounce= (Button) findViewById(R.id.buttonBounce); textViewFadeIn= (TextView) findViewById(R.id.textViewFadeIn); textViewFadeOut= (TextView) findViewById(R.id.textViewFadeOut); textViewBlink= (TextView) findViewById(R.id.textViewBlink); textViewZoomIn= (TextView) findViewById(R.id.textViewZoomIn); textViewZoomOut= (TextView) findViewById(R.id.textViewZoomOut); textViewRotate= (TextView) findViewById(R.id.textViewRotate); textViewMove= (TextView) findViewById(R.id.textViewMove); textViewSlideUp= (TextView) findViewById(R.id.textViewSlideUp); textViewSlideDown= (TextView) findViewById(R.id.textViewSlideDown); textViewBounce= (TextView) findViewById(R.id.textViewBounce); buttonFadeIn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(MainActivity.this, R.animator.fade_in); set.setTarget(textViewFadeIn); set.start(); } }); buttonFadeOut.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(MainActivity.this, R.animator.fade_out); set.setTarget(textViewFadeOut); set.start(); } }); buttonBlink.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ObjectAnimator objectAnimator=ObjectAnimator.ofFloat(textViewBlink,View.ALPHA,0f,1f); objectAnimator.setDuration(600); objectAnimator.setRepeatMode(ValueAnimator.REVERSE); objectAnimator.setRepeatCount(ValueAnimator.INFINITE); objectAnimator.setInterpolator(new AccelerateInterpolator()); objectAnimator.start(); } }); buttonZoomIn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { PropertyValuesHolder propertyValuesHolder1=PropertyValuesHolder.ofFloat(View.SCALE_X,1f,2f); PropertyValuesHolder propertyValuesHolder2=PropertyValuesHolder.ofFloat(View.SCALE_Y,1f,2f); ObjectAnimator objectAnimator=ObjectAnimator.ofPropertyValuesHolder(textViewZoomIn, propertyValuesHolder1,propertyValuesHolder2); objectAnimator.setDuration(1000); objectAnimator.start(); } }); buttonZoomOut.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ValueAnimator valueAnimator1=ValueAnimator.ofFloat(1f,0.5f); valueAnimator1.setDuration(1000); valueAnimator1.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { textViewZoomOut.setScaleX((Float) animation.getAnimatedValue()); } }); ValueAnimator valueAnimator2=ValueAnimator.ofFloat(1f,0.5f); valueAnimator2.setDuration(1000); valueAnimator2.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { textViewZoomOut.setScaleY((Float) animation.getAnimatedValue()); } }); AnimatorSet animatorSet=new AnimatorSet(); animatorSet.playTogether(valueAnimator1,valueAnimator2); animatorSet.start(); } }); buttonRotate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // to perform rotate on center of the element // by default : pivotX=50 and pivotY=50 textViewRotate.setPivotX(50); textViewRotate.setPivotY(50); ValueAnimator valueAnimator1=ValueAnimator.ofFloat(0,360); valueAnimator1.setDuration(600); valueAnimator1.setInterpolator(new CycleInterpolator(0.25f)); valueAnimator1.setRepeatMode(ValueAnimator.RESTART); valueAnimator1.setRepeatCount(ValueAnimator.INFINITE); valueAnimator1.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { textViewRotate.setRotation((Float) animation.getAnimatedValue()); } }); valueAnimator1.start(); } }); buttonMove.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ValueAnimator valueAnimator1=ValueAnimator.ofFloat(0f,150f); valueAnimator1.setDuration(1000); valueAnimator1.setRepeatMode(ValueAnimator.REVERSE); valueAnimator1.setRepeatCount(ValueAnimator.INFINITE); valueAnimator1.setInterpolator(new AccelerateInterpolator()); valueAnimator1.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { textViewMove.setTranslationX((Float) animation.getAnimatedValue()); } }); valueAnimator1.start(); } }); buttonSlideUp.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { textViewSlideUp.setPivotY(0); ValueAnimator valueAnimator1=ValueAnimator.ofFloat(1f,0f); valueAnimator1.setDuration(1000); valueAnimator1.setInterpolator(new AccelerateInterpolator()); valueAnimator1.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { textViewSlideUp.setScaleY((Float) animation.getAnimatedValue()); } }); valueAnimator1.start(); } }); buttonSlideDown.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { textViewSlideDown.setPivotY(0); ValueAnimator valueAnimator1=ValueAnimator.ofFloat(0f,1f); valueAnimator1.setDuration(1000); valueAnimator1.setInterpolator(new AccelerateInterpolator()); valueAnimator1.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { textViewSlideDown.setScaleY((Float) animation.getAnimatedValue()); } }); valueAnimator1.start(); } }); buttonBounce.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ValueAnimator valueAnimator1=ValueAnimator.ofFloat(0f,1f); valueAnimator1.setDuration(1000); valueAnimator1.setInterpolator(new BounceInterpolator()); valueAnimator1.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { textViewBounce.setScaleY((Float) animation.getAnimatedValue()); } }); valueAnimator1.start(); } }); } }
References
https://github.com/mhdr/AndroidSamples/tree/master/054