video card: playback preview: upd

This commit is contained in:
Yuriy Liskov
2025-05-13 01:10:49 +03:00
parent c8ab2b7c61
commit 057643c73e
4 changed files with 26 additions and 18 deletions

View File

@ -120,6 +120,7 @@ public class ComplexImageView extends RelativeLayout {
mPreviewImage.setScaleType(ScaleType.CENTER_CROP);
mPreviewImage.setAdjustViewBounds(true);
mPreviewContainer.addView(mPreviewImage, new FrameLayout.LayoutParams(mPreviewWidth, mPreviewHeight));
mPreviewContainer.setVisibility(View.VISIBLE);
}
Glide.with(getContext().getApplicationContext()) // FIX: "You cannot start a load for a destroyed activity"
@ -139,7 +140,10 @@ public class ComplexImageView extends RelativeLayout {
if (mPreviewPlayer == null) {
mPreviewPlayer = new EmbedPlayerView(getContext());
mPreviewPlayer.setUseController(false);
mPreviewPlayer.setOnLoad(() -> mPreviewContainer.addView(mPreviewPlayer, new FrameLayout.LayoutParams(mPreviewWidth, mPreviewHeight)));
mPreviewPlayer.setOnLoad(() -> {
mPreviewContainer.addView(mPreviewPlayer, new FrameLayout.LayoutParams(mPreviewWidth, mPreviewHeight));
mPreviewContainer.setVisibility(View.VISIBLE);
});
}
mPreviewPlayer.openVideo(mPreviewVideoId);
@ -148,6 +152,7 @@ public class ComplexImageView extends RelativeLayout {
public void stopPlayback() {
if (mPreviewUrl != null) {
mPreviewContainer.removeView(mPreviewImage);
mPreviewContainer.setVisibility(View.GONE);
mPreviewImage.setImageDrawable(null);
Glide.with(getContext()).clear(mPreviewImage);
mPreviewImage = null;
@ -156,6 +161,7 @@ public class ComplexImageView extends RelativeLayout {
if (mPreviewPlayer != null) {
mPreviewContainer.removeView(mPreviewPlayer);
mPreviewContainer.setVisibility(View.GONE);
mPreviewPlayer.finish();
mPreviewPlayer = null;
}

View File

@ -232,7 +232,7 @@ public class EmbedPlayerView extends PlayerView implements PlaybackView {
@Override
public void finish() {
releasePlayer();
destroyPlayerObjects();
}
@Override
@ -466,9 +466,14 @@ public class EmbedPlayerView extends PlayerView implements PlaybackView {
mVideo = video;
mPlaybackPresenter.onNewVideo(video);
initPlayer();
createPlayerObjects();
}
private void createPlayerObjects() {
if (isEngineInitialized()) {
return;
}
// Use default or pass your bandwidthMeter here: bandwidthMeter = new DefaultBandwidthMeter.Builder(getContext()).build()
DefaultTrackSelector trackSelector = new RestoreTrackSelector(new AdaptiveTrackSelection.Factory());
mExoPlayerController.setTrackSelector(trackSelector);
@ -491,27 +496,24 @@ public class EmbedPlayerView extends PlayerView implements PlaybackView {
}
setPlayer(mPlayer);
}
private void releasePlayer() {
if (isEngineInitialized()) {
Log.d(TAG, "releasePlayer: Start releasing player engine...");
mOnLoad = null;
mPlaybackPresenter.onEngineReleased();
destroyPlayerObjects();
}
mPlaybackPresenter.onEngineInitialized(); // start playback
}
private void destroyPlayerObjects() {
// Fix access calls when player isn't initialized
mExoPlayerController.release();
mPlayer = null;
setPlayer(null);
//mPlaybackPresenter.setView(null);
if (isEngineInitialized()) {
mOnLoad = null;
mPlaybackPresenter.onEngineReleased();
// Fix access calls when player isn't initialized
mExoPlayerController.release();
mPlayer = null;
setPlayer(null);
//mPlaybackPresenter.setView(null);
}
}
private void initPlayer() {
if (isEngineInitialized()) {
if (mExoPlayerController != null) {
return;
}
@ -520,8 +522,6 @@ public class EmbedPlayerView extends PlayerView implements PlaybackView {
mExoPlayerController = new ExoPlayerController(getContext(), mPlaybackPresenter);
mExoPlayerController.setOnVideoLoaded(this::onVideoLoaded);
mPlaybackPresenter.onViewInitialized(); // init all controllers
createPlayerObjects();
mPlaybackPresenter.onEngineInitialized(); // start playback
}
private void onVideoLoaded() {

View File

@ -13,6 +13,7 @@
android:adjustViewBounds="true"
tools:ignore="ContentDescription"/>
<FrameLayout
android:visibility="gone"
android:id="@+id/preview_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

View File

@ -5,6 +5,7 @@
tools:ignore="ContentDescription"
style="?attr/imageCardViewImageStyle"/>
<FrameLayout
android:visibility="gone"
android:id="@+id/preview_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />