private void updateFavoriteBtn() { fab.setImageDrawable(isFavorite ? mStarFilled : mStarOutline); if (fab.getScaleX() == 0) { // credits for onPreDraw technique: // http://frogermcs.github.io/Instagram-with-Material-Design-concept-part-2-Comments-transition/ fab.getViewTreeObserver() .addOnPreDrawListener( new ViewTreeObserver.OnPreDrawListener() { @Override public boolean onPreDraw() { fab.getViewTreeObserver().removeOnPreDrawListener(this); fab.animate() .withLayer() .scaleX(1f) .scaleY(1f) .setInterpolator(new DecelerateInterpolator()) .setDuration(mAnimShortDuration) .start(); return true; } }); } }