Skip to end of metadata
Go to start of metadata

Изменение цвета и прозрачности подложки

По умолчанию, подложка для отображения видеопотока (SurfaceViewRenderer) имеет черный цвет. При необходимости, подложка может быть сделана прозрачной. Для этого нужно импортировать следующие модули:

import android.graphics.PixelFormat;

и воспользоваться методами setZOrderOnTop() и setFormat():

        localRender = (SurfaceViewRenderer) findViewById(R.id.local_video_view);
        localRender.setZOrderOnTop(true);
        localRender.getHolder().setFormat(PixelFormat.TRANSPARENT);

Для того, чтобы задать цвет подложки, необходимо вызвать метод setBackgroundColor():

        remoteRender = (SurfaceViewRenderer) findViewById(R.id.remote_video_view);
        remoteRender.setZOrderOnTop(true);
        remoteRender.getHolder().setFormat(PixelFormat.TRANSLUCENT);
        remoteRender.setBackgroundColor(0xFFFF8800); //orange in RGB

Очистка последнего кадра

По окончании воспроизведения видео, на подложке остается последний кадр. При необходимости, кадр может быть очищен, при этом подложка будет залита черным цветом. Для этого нужно импортировать следующие модули:

import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.PixelFormat;
import android.graphics.PorterDuff;

и вызвать метод release():

                    playStream.stop();
                    playStream = null;
                    remoteRender.release();

После вызова данного метода никакие операции с подложкой невозможны.

Если этот способ не работает, или подложка должна быть использована повторно, SurfaceViewRenderer может быть скрыт. Например, при нажатии кнопки "Play" делаем remoteRender видимым

        mPlayButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                mPlayButton.setEnabled(false);
                if (mPlayButton.getTag() == null || Integer.valueOf(R.string.action_play).equals(mPlayButton.getTag())) {
                    remoteRender.setVisibility(View.VISIBLE);
                    ...
                    playStream = session.createStream(streamOptions);
                    ...

Затем, когда нажата кнопка "Stop", останавливаем воспроизведение и делаем remoteRender невидимым

                    ...
                } else {
                    playStream.stop();
                    playStream = null;
                    remoteRender.setVisibility(View.GONE);
                }
                ...
         }

  • No labels