From 94e2b9e66ea03acb4ef55ddc64336e0c4b63feec Mon Sep 17 00:00:00 2001 From: Moxie Marlinspike Date: Tue, 16 Jan 2018 11:21:58 -0800 Subject: [PATCH] Make video player in media player control a view stub --- res/layout/media_view.xml | 12 +++++----- res/layout/media_view_video.xml | 7 ++++++ .../securesms/components/MediaView.java | 23 +++++++++++-------- 3 files changed, 27 insertions(+), 15 deletions(-) create mode 100644 res/layout/media_view_video.xml diff --git a/res/layout/media_view.xml b/res/layout/media_view.xml index c4ef9fcaa4..dd6a39ad7e 100644 --- a/res/layout/media_view.xml +++ b/res/layout/media_view.xml @@ -10,11 +10,11 @@ android:layout_height="match_parent" android:contentDescription="@string/media_preview_activity__media_content_description" /> - - + \ No newline at end of file diff --git a/res/layout/media_view_video.xml b/res/layout/media_view_video.xml new file mode 100644 index 0000000000..913200fa37 --- /dev/null +++ b/res/layout/media_view_video.xml @@ -0,0 +1,7 @@ + + diff --git a/src/org/thoughtcrime/securesms/components/MediaView.java b/src/org/thoughtcrime/securesms/components/MediaView.java index 17667a4eb0..e392783c9b 100644 --- a/src/org/thoughtcrime/securesms/components/MediaView.java +++ b/src/org/thoughtcrime/securesms/components/MediaView.java @@ -16,14 +16,15 @@ import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.crypto.MasterSecret; import org.thoughtcrime.securesms.mms.GlideRequests; import org.thoughtcrime.securesms.mms.VideoSlide; +import org.thoughtcrime.securesms.util.views.Stub; import org.thoughtcrime.securesms.video.VideoPlayer; import java.io.IOException; public class MediaView extends FrameLayout { - private ZoomingImageView imageView; - private VideoPlayer videoView; + private ZoomingImageView imageView; + private Stub videoView; public MediaView(@NonNull Context context) { super(context); @@ -50,7 +51,7 @@ public class MediaView extends FrameLayout { inflate(getContext(), R.layout.media_view, this); this.imageView = findViewById(R.id.image); - this.videoView = findViewById(R.id.video_player); + this.videoView = new Stub<>(findViewById(R.id.video_player_stub)); } public void set(@NonNull MasterSecret masterSecret, @@ -64,24 +65,28 @@ public class MediaView extends FrameLayout { { if (mediaType.startsWith("image/")) { imageView.setVisibility(View.VISIBLE); - videoView.setVisibility(View.GONE); + if (videoView.resolved()) videoView.get().setVisibility(View.GONE); imageView.setImageUri(masterSecret, glideRequests, source, mediaType); } else if (mediaType.startsWith("video/")) { imageView.setVisibility(View.GONE); - videoView.setVisibility(View.VISIBLE); - videoView.setWindow(window); - videoView.setVideoSource(masterSecret, new VideoSlide(getContext(), source, size), autoplay); + videoView.get().setVisibility(View.VISIBLE); + videoView.get().setWindow(window); + videoView.get().setVideoSource(masterSecret, new VideoSlide(getContext(), source, size), autoplay); } else { throw new IOException("Unsupported media type: " + mediaType); } } public void pause() { - this.videoView.pause(); + if (this.videoView.resolved()){ + this.videoView.get().pause(); + } } public void cleanup() { this.imageView.cleanup(); - this.videoView.cleanup(); + if (this.videoView.resolved()) { + this.videoView.get().cleanup(); + } } }