Fix missing background on video player bar.

This commit is contained in:
Alex Hart 2021-07-22 11:10:57 -03:00
parent aa67c82634
commit ce31e642dd
4 changed files with 41 additions and 21 deletions

View file

@ -57,6 +57,7 @@ import android.view.View.OnKeyListener;
import android.view.WindowManager;
import android.view.inputmethod.EditorInfo;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
@ -381,7 +382,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
private MenuItem searchViewItem;
private MessageRequestsBottomView messageRequestBottomView;
private ConversationReactionDelegate reactionDelegate;
private Stub<VoiceNotePlayerView> voiceNotePlayerViewStub;
private Stub<FrameLayout> voiceNotePlayerViewStub;
private AttachmentManager attachmentManager;
private AudioRecorder audioRecorder;
@ -413,6 +414,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
private VoiceRecorderWakeLock voiceRecorderWakeLock;
private DraftViewModel draftViewModel;
private VoiceNoteMediaController voiceNoteMediaController;
private VoiceNotePlayerView voiceNotePlayerView;
private LiveRecipient recipient;
@ -2076,19 +2078,25 @@ public class ConversationActivity extends PassphraseRequiredActivity
voiceNoteMediaController.getVoiceNotePlayerViewState().observe(this, state -> {
if (state.isPresent()) {
if (!voiceNotePlayerViewStub.resolved()) {
voiceNotePlayerViewStub.get().setListener(new VoiceNotePlayerViewListener());
}
voiceNotePlayerViewStub.get().show();
voiceNotePlayerViewStub.get().setState(state.get());
requireVoiceNotePlayerView().show();
requireVoiceNotePlayerView().setState(state.get());
} else if (voiceNotePlayerViewStub.resolved()) {
voiceNotePlayerViewStub.get().hide();
requireVoiceNotePlayerView().hide();
}
});
voiceNoteMediaController.getVoiceNotePlaybackState().observe(ConversationActivity.this, inputPanel.getPlaybackStateObserver());
}
private @NonNull VoiceNotePlayerView requireVoiceNotePlayerView() {
if (voiceNotePlayerView == null) {
voiceNotePlayerView = voiceNotePlayerViewStub.get().findViewById(R.id.voice_note_player_view);
voiceNotePlayerView.setListener(new VoiceNotePlayerViewListener());
}
return voiceNotePlayerView;
}
private void updateWallpaper(@Nullable ChatWallpaper chatWallpaper) {
Log.d(TAG, "Setting wallpaper.");
if (chatWallpaper != null) {

View file

@ -38,6 +38,7 @@ import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
@ -58,8 +59,6 @@ import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.constraintlayout.widget.ConstraintSet;
import androidx.core.content.res.ResourcesCompat;
import androidx.fragment.app.DialogFragment;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.LinearLayoutManager;
@ -92,7 +91,6 @@ import org.thoughtcrime.securesms.components.reminder.ReminderView;
import org.thoughtcrime.securesms.components.reminder.ServiceOutageReminder;
import org.thoughtcrime.securesms.components.reminder.UnauthorizedReminder;
import org.thoughtcrime.securesms.components.settings.app.AppSettingsActivity;
import org.thoughtcrime.securesms.components.voice.VoiceNoteMediaController;
import org.thoughtcrime.securesms.components.voice.VoiceNoteMediaControllerOwner;
import org.thoughtcrime.securesms.components.voice.VoiceNotePlayerView;
import org.thoughtcrime.securesms.conversation.ConversationFragment;
@ -195,7 +193,9 @@ public class ConversationListFragment extends MainFragment implements ActionMode
private Drawable archiveDrawable;
private AppForegroundObserver.Listener appForegroundObserver;
private VoiceNoteMediaControllerOwner mediaControllerOwner;
private Stub<VoiceNotePlayerView> voiceNotePlayerViewStub;
private Stub<FrameLayout> voiceNotePlayerViewStub;
private VoiceNotePlayerView voiceNotePlayerView;
private Stopwatch startupStopwatch;
@ -531,18 +531,24 @@ public class ConversationListFragment extends MainFragment implements ActionMode
private void initializeVoiceNotePlayer() {
mediaControllerOwner.getVoiceNoteMediaController().getVoiceNotePlayerViewState().observe(getViewLifecycleOwner(), state -> {
if (state.isPresent()) {
if (!voiceNotePlayerViewStub.resolved()) {
voiceNotePlayerViewStub.get().setListener(new VoiceNotePlayerViewListener());
}
voiceNotePlayerViewStub.get().setState(state.get());
voiceNotePlayerViewStub.get().show();
requireVoiceNotePlayerView().setState(state.get());
requireVoiceNotePlayerView().show();
} else if (voiceNotePlayerViewStub.resolved()) {
voiceNotePlayerViewStub.get().hide();
requireVoiceNotePlayerView().hide();
}
});
}
private @NonNull VoiceNotePlayerView requireVoiceNotePlayerView() {
if (voiceNotePlayerView == null) {
voiceNotePlayerView = voiceNotePlayerViewStub.get().findViewById(R.id.voice_note_player_view);
voiceNotePlayerView.setListener(new VoiceNotePlayerViewListener());
}
return voiceNotePlayerView;
}
private void initializeListAdapters() {
defaultAdapter = new ConversationListAdapter(GlideApp.with(this), this);
searchAdapter = new ConversationListSearchAdapter(GlideApp.with(this), this, Locale.getDefault());

View file

@ -1,5 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<org.thoughtcrime.securesms.components.voice.VoiceNotePlayerView xmlns:android="http://schemas.android.com/apk/res/android"
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/voice_note_player_view_background">
<org.thoughtcrime.securesms.components.voice.VoiceNotePlayerView
android:id="@+id/voice_note_player_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?selectableItemBackground" />
</FrameLayout>

View file

@ -2,7 +2,6 @@
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:background="@color/voice_note_player_view_background"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
<com.airbnb.lottie.LottieAnimationView