mirror of
https://github.com/yuliskov/SmartTube.git
synced 2025-05-17 11:25:54 +08:00
video card: playback preview: upd
This commit is contained in:
@ -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;
|
||||
}
|
||||
|
@ -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() {
|
||||
|
@ -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" />
|
||||
|
@ -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" />
|
||||
|
Reference in New Issue
Block a user