@Override
  protected void initialize(Bundle savedInstanceState) {
    super.initialize(savedInstanceState);

    mOverlay = (ViewGroup) findViewById(R.id.overlay);
    mTray = findViewById(R.id.tray);
    mFab = (FloatingActionButton) findViewById(R.id.fab);

    mFab.getViewTreeObserver()
        .addOnGlobalLayoutListener(
            new ViewTreeObserver.OnGlobalLayoutListener() {
              @Override
              public void onGlobalLayout() {
                if (android.os.Build.VERSION.SDK_INT >= 16) {
                  mFab.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                } else {
                  mFab.getViewTreeObserver().removeGlobalOnLayoutListener(this);
                }
                initializeLayout();
              }
            });
    mFab.setOnClickListener(
        new View.OnClickListener() {
          @Override
          public void onClick(View v) {
            showTray();
            hideFab();
          }
        });
    setupTray(savedInstanceState);
    if (findViewById(R.id.pad_pager) == null) {
      showFab();
    }
  }
 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;
               }
             });
   }
 }