Как добавить режим «картинка в картинке» на Touch Drag Down - PullRequest
0 голосов
/ 14 января 2019

Я использую этот проект Github для моего приложения для воспроизведения видео с использованием YouTube API. У меня есть следующий код в моем методе onInitializationSuccess.

 @Override
public void onInitializationSuccess(Provider provider, YouTubePlayer player, boolean wasRestored) {
    this.player = player;
    player.setPlayerStateChangeListener(playerStateChangeListener);
    player.setPlaybackEventListener(playbackEventListener);

    if (!wasRestored) {
        player.cueVideo("I0D-fkypQQw");
    }
}

Я кодировал YouTubePlayerView для воспроизведения в режиме PIP следующим образом:

enter_pip.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //  Intent i = new Intent(getBaseContext(), PipActivity.class);
            //  startActivity(i);
            if (android.os.Build.VERSION.SDK_INT >= 26) {
                //Trigger PiP mode
                try {
                    Rational rational = new Rational(youTubeView.getWidth(), youTubeView.getHeight());

                    PictureInPictureParams mParams =
                            new PictureInPictureParams.Builder()
                                    .setAspectRatio(rational)
                                    .build();

                    enterPictureInPictureMode(mParams);
                } catch (IllegalStateException e) {
                    e.printStackTrace();
                }
            } else {
                Toast.makeText(MainActivity.this, "API 26 needed to perform PiP", Toast.LENGTH_SHORT).show();
            }
        }

    });
}

Видео успешно входит в режим PIP, но проблема в том, что видео останавливается после перехода в режим PIP, я хочу, чтобы оно продолжалось с того места, где оно было, когда оно не в режиме PIP.

Пожалуйста, помогите мне добавить режим «картинка в картинке», при котором изображение в режиме изображения должно продолжаться, а не останавливаться. Я ищу YouTube, например PIP, в котором видео воспроизводится внизу с помощью кнопок «Воспроизведение / Пауза» и Кнопка Закрыть справа ..
Я ищу PIP, как на этом изображении

1 Ответ

0 голосов
/ 23 января 2019

Просмотр это Ссылка на GitHub, которая полностью соответствует вашим критериям видео DragDown ...

Чтобы подвести итог проекта github ... используйте код метода goMin() в классе YouTuDraggingView, как показано ниже:

    public void goMin(final boolean isDismissToMin) {
    nowStateScale = MIN_RATIO_HEIGHT;
    final float fullTop = Math.abs(mBackgroundViewWrapper.getMarginTop() - mRangeScrollY);
    ValueAnimator valueAnimator = ValueAnimator.ofFloat(mBackgroundViewWrapper.getMarginTop(), mRangeScrollY);
    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            float value = (float) animation.getAnimatedValue();
            mBackgroundView.setAlpha(isDismissToMin ? (value / fullTop) : 1);
            updateVideoView((int) value);
            if (value == mRangeScrollY) {
                ViewGroup.LayoutParams p = getLayoutParams();
                p.width = -2;
                p.height = -2;
                setLayoutParams(p);
                mCallback.status(STATUS_MIN);
            }
        }
    });
    valueAnimator.setDuration((long) (Math.abs((1 - mBackgroundViewWrapper.getMarginTop() / mRangeScrollY)) * rangeDuration)).start();
  }

и goMax () для обратного ...

    public void goMax() {
    if (nowStateScale == MIN_RATIO_HEIGHT) {
        ViewGroup.LayoutParams params = getLayoutParams();
        params.width = -1;
        params.height = -1;
        setLayoutParams(params);
    }


    ValueAnimator valueAnimator = ValueAnimator.ofFloat(mBackgroundViewWrapper.getMarginTop(), 0);
    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            float value = (float) animation.getAnimatedValue();

            updateVideoView((int) value);
            if (value == 0) {
                if (isLandscape()) {
                    goFullScreen();
                }
                mCallback.status(STATUS_MAX);
            }
        }
    });
    valueAnimator.setDuration((long) (mBackgroundViewWrapper.getMarginTop() / mRangeScrollY * rangeDuration)).start();

    nowStateScale = 1.0f;
  }

Надеюсь, это поможет вам ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...