@Override
    public void onDoubleTapProgressUp(float posX, float posY) {

        if (PlayerActivity.locked)
            return;

        // Check first whether forwarding/rewinding is "valid"
        if (player == null || player.getMediaItemCount() < 1 || player.getCurrentPosition() < 0 || playerView == null || playerView.getWidth() < 0)
            return;

        long current = player.getCurrentPosition();
        // Rewind and start of the video (+ 0.5 sec tolerance)
        if (posX < playerView.getWidth() * 0.35 && current <= 500)
            return;

        // Forward and end of the video (- 0.5 sec tolerance)
        if (posX > playerView.getWidth() * 0.65 && current >= (player.getDuration() - 500))
            return;

        // YouTube behavior: show overlay on MOTION_UP
        // But check whether the first double tap is in invalid area
        if (getVisibility() != View.VISIBLE) {
            if (posX < playerView.getWidth() * 0.35 || posX > playerView.getWidth() * 0.65) {
                if (performListener != null)
                    performListener.onAnimationStart();
                SecondsView secondsView = findViewById(R.id.seconds_view);
                secondsView.setVisibility(View.VISIBLE);
                secondsView.start();
            } else
                return;
        }

        if (posX < playerView.getWidth() * 0.35) {

            // First time tap or switched
            SecondsView secondsView = findViewById(R.id.seconds_view);
            if (secondsView.isForward()) {
                changeConstraints(false);
                secondsView.setForward(false);
                secondsView.setSeconds(0);
            }

            // Cancel ripple and start new without triggering overlay disappearance
            // (resetting instead of ending)
            ((CircleClipTapView)findViewById(R.id.circle_clip_tap_view)).resetAnimation(new Runnable() {
                @Override
                public void run() {
                    ((CircleClipTapView)findViewById(R.id.circle_clip_tap_view)).updatePosition(posX, posY);
                }
            });
            rewinding();
        } else if (posX > playerView.getWidth() * 0.65) {

            // First time tap or switched
            SecondsView secondsView = findViewById(R.id.seconds_view);
            if (!secondsView.isForward()) {
                changeConstraints(true);
                secondsView.setForward(true);
                secondsView.setSeconds(0);
            }

            // Cancel ripple and start new without triggering overlay disappearance
            // (resetting instead of ending)
            ((CircleClipTapView)findViewById(R.id.circle_clip_tap_view)).resetAnimation(new Runnable() {
                @Override
                public void run() {
                    ((CircleClipTapView)findViewById(R.id.circle_clip_tap_view)).updatePosition(posX, posY);
                }
            });
            forwarding();
        } else {
            // Middle area tapped: do nothing
            //
            // playerView?.cancelInDoubleTapMode()
            // circle_clip_tap_view.endAnimation()
            // triangle_seconds_view.stop()
        }
    }
TextView view for *xx seconds*.

In case of you'd like to change some specific attributes of the TextView in runtime.
app/src/main/java/com/brouken/player/dtpv/youtube/YouTubeOverlay.java