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.setScaleType(ScaleType.CENTER_CROP);
|
||||||
mPreviewImage.setAdjustViewBounds(true);
|
mPreviewImage.setAdjustViewBounds(true);
|
||||||
mPreviewContainer.addView(mPreviewImage, new FrameLayout.LayoutParams(mPreviewWidth, mPreviewHeight));
|
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"
|
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) {
|
if (mPreviewPlayer == null) {
|
||||||
mPreviewPlayer = new EmbedPlayerView(getContext());
|
mPreviewPlayer = new EmbedPlayerView(getContext());
|
||||||
mPreviewPlayer.setUseController(false);
|
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);
|
mPreviewPlayer.openVideo(mPreviewVideoId);
|
||||||
@ -148,6 +152,7 @@ public class ComplexImageView extends RelativeLayout {
|
|||||||
public void stopPlayback() {
|
public void stopPlayback() {
|
||||||
if (mPreviewUrl != null) {
|
if (mPreviewUrl != null) {
|
||||||
mPreviewContainer.removeView(mPreviewImage);
|
mPreviewContainer.removeView(mPreviewImage);
|
||||||
|
mPreviewContainer.setVisibility(View.GONE);
|
||||||
mPreviewImage.setImageDrawable(null);
|
mPreviewImage.setImageDrawable(null);
|
||||||
Glide.with(getContext()).clear(mPreviewImage);
|
Glide.with(getContext()).clear(mPreviewImage);
|
||||||
mPreviewImage = null;
|
mPreviewImage = null;
|
||||||
@ -156,6 +161,7 @@ public class ComplexImageView extends RelativeLayout {
|
|||||||
|
|
||||||
if (mPreviewPlayer != null) {
|
if (mPreviewPlayer != null) {
|
||||||
mPreviewContainer.removeView(mPreviewPlayer);
|
mPreviewContainer.removeView(mPreviewPlayer);
|
||||||
|
mPreviewContainer.setVisibility(View.GONE);
|
||||||
mPreviewPlayer.finish();
|
mPreviewPlayer.finish();
|
||||||
mPreviewPlayer = null;
|
mPreviewPlayer = null;
|
||||||
}
|
}
|
||||||
|
@ -232,7 +232,7 @@ public class EmbedPlayerView extends PlayerView implements PlaybackView {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void finish() {
|
public void finish() {
|
||||||
releasePlayer();
|
destroyPlayerObjects();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -466,9 +466,14 @@ public class EmbedPlayerView extends PlayerView implements PlaybackView {
|
|||||||
mVideo = video;
|
mVideo = video;
|
||||||
mPlaybackPresenter.onNewVideo(video);
|
mPlaybackPresenter.onNewVideo(video);
|
||||||
initPlayer();
|
initPlayer();
|
||||||
|
createPlayerObjects();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createPlayerObjects() {
|
private void createPlayerObjects() {
|
||||||
|
if (isEngineInitialized()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Use default or pass your bandwidthMeter here: bandwidthMeter = new DefaultBandwidthMeter.Builder(getContext()).build()
|
// Use default or pass your bandwidthMeter here: bandwidthMeter = new DefaultBandwidthMeter.Builder(getContext()).build()
|
||||||
DefaultTrackSelector trackSelector = new RestoreTrackSelector(new AdaptiveTrackSelection.Factory());
|
DefaultTrackSelector trackSelector = new RestoreTrackSelector(new AdaptiveTrackSelection.Factory());
|
||||||
mExoPlayerController.setTrackSelector(trackSelector);
|
mExoPlayerController.setTrackSelector(trackSelector);
|
||||||
@ -491,27 +496,24 @@ public class EmbedPlayerView extends PlayerView implements PlaybackView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
setPlayer(mPlayer);
|
setPlayer(mPlayer);
|
||||||
}
|
|
||||||
|
|
||||||
private void releasePlayer() {
|
mPlaybackPresenter.onEngineInitialized(); // start playback
|
||||||
if (isEngineInitialized()) {
|
|
||||||
Log.d(TAG, "releasePlayer: Start releasing player engine...");
|
|
||||||
mOnLoad = null;
|
|
||||||
mPlaybackPresenter.onEngineReleased();
|
|
||||||
destroyPlayerObjects();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void destroyPlayerObjects() {
|
private void destroyPlayerObjects() {
|
||||||
// Fix access calls when player isn't initialized
|
if (isEngineInitialized()) {
|
||||||
mExoPlayerController.release();
|
mOnLoad = null;
|
||||||
mPlayer = null;
|
mPlaybackPresenter.onEngineReleased();
|
||||||
setPlayer(null);
|
// Fix access calls when player isn't initialized
|
||||||
//mPlaybackPresenter.setView(null);
|
mExoPlayerController.release();
|
||||||
|
mPlayer = null;
|
||||||
|
setPlayer(null);
|
||||||
|
//mPlaybackPresenter.setView(null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initPlayer() {
|
private void initPlayer() {
|
||||||
if (isEngineInitialized()) {
|
if (mExoPlayerController != null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -520,8 +522,6 @@ public class EmbedPlayerView extends PlayerView implements PlaybackView {
|
|||||||
mExoPlayerController = new ExoPlayerController(getContext(), mPlaybackPresenter);
|
mExoPlayerController = new ExoPlayerController(getContext(), mPlaybackPresenter);
|
||||||
mExoPlayerController.setOnVideoLoaded(this::onVideoLoaded);
|
mExoPlayerController.setOnVideoLoaded(this::onVideoLoaded);
|
||||||
mPlaybackPresenter.onViewInitialized(); // init all controllers
|
mPlaybackPresenter.onViewInitialized(); // init all controllers
|
||||||
createPlayerObjects();
|
|
||||||
mPlaybackPresenter.onEngineInitialized(); // start playback
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onVideoLoaded() {
|
private void onVideoLoaded() {
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
android:adjustViewBounds="true"
|
android:adjustViewBounds="true"
|
||||||
tools:ignore="ContentDescription"/>
|
tools:ignore="ContentDescription"/>
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
|
android:visibility="gone"
|
||||||
android:id="@+id/preview_container"
|
android:id="@+id/preview_container"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content" />
|
android:layout_height="wrap_content" />
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
tools:ignore="ContentDescription"
|
tools:ignore="ContentDescription"
|
||||||
style="?attr/imageCardViewImageStyle"/>
|
style="?attr/imageCardViewImageStyle"/>
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
|
android:visibility="gone"
|
||||||
android:id="@+id/preview_container"
|
android:id="@+id/preview_container"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content" />
|
android:layout_height="wrap_content" />
|
||||||
|
Reference in New Issue
Block a user