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