display overlay instead of grid in pip view for group calls

this is a quick and dirty solution until "speaker view" is introduced in the future which should be used for the pip view.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
Marcel Hibbe 2021-10-30 00:35:41 +02:00
parent 57804c8d62
commit a0c95113bf
No known key found for this signature in database
GPG key ID: C793F8B59F43CE7B
2 changed files with 82 additions and 40 deletions

View file

@ -559,52 +559,53 @@ public class CallActivity extends BaseActivity {
}
private void initGridAdapter() {
if (binding.conversationRelativeLayout != null) {
int columns;
int participantsInGrid = participantDisplayItems.size();
if (getResources() != null && getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
if (participantsInGrid > 2) {
columns = 2;
} else {
columns = 1;
}
int columns;
int participantsInGrid = participantDisplayItems.size();
if (getResources() != null && getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
if (participantsInGrid > 2) {
columns = 2;
} else {
if (participantsInGrid > 2) {
columns = 3;
} else if (participantsInGrid > 1) {
columns = 2;
} else {
columns = 1;
}
columns = 1;
}
} else {
if (participantsInGrid > 2) {
columns = 3;
} else if (participantsInGrid > 1) {
columns = 2;
} else {
columns = 1;
}
}
binding.gridview.setNumColumns(columns);
binding.gridview.setNumColumns(columns);
binding.conversationRelativeLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
binding.conversationRelativeLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
int height = binding.conversationRelativeLayout.getMeasuredHeight();
binding.gridview.setMinimumHeight(height);
}
});
binding.conversationRelativeLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
binding.conversationRelativeLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
int height = binding.conversationRelativeLayout.getMeasuredHeight();
binding.gridview.setMinimumHeight(height);
}
});
binding.callInfosLinearLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
binding.callInfosLinearLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
});
binding.callInfosLinearLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
binding.callInfosLinearLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
});
participantsAdapter = new ParticipantsAdapter(
this,
participantDisplayItems,
binding.conversationRelativeLayout,
binding.callInfosLinearLayout,
columns,
isVoiceOnlyCall);
binding.gridview.setAdapter(participantsAdapter);
participantsAdapter = new ParticipantsAdapter(
this,
participantDisplayItems,
binding.conversationRelativeLayout,
binding.callInfosLinearLayout,
columns,
isVoiceOnlyCall);
binding.gridview.setAdapter(participantsAdapter);
if (isInPipMode){
updateUiForPipMode();
}
}
@ -2470,6 +2471,13 @@ public class CallActivity extends BaseActivity {
binding.selfVideoViewWrapper.setVisibility(View.GONE);
binding.callStates.callStateRelativeLayout.setVisibility(View.GONE);
if (participantDisplayItems.size() > 1){
binding.pipCallConversationNameTextView.setText(conversationName);
binding.pipGroupCallOverlay.setVisibility(View.VISIBLE);
} else {
binding.pipGroupCallOverlay.setVisibility(View.INVISIBLE);
}
binding.selfVideoRenderer.release();
}
@ -2483,6 +2491,8 @@ public class CallActivity extends BaseActivity {
binding.callInfosLinearLayout.setVisibility(View.VISIBLE);
binding.selfVideoViewWrapper.setVisibility(View.VISIBLE);
binding.pipGroupCallOverlay.setVisibility(View.INVISIBLE);
}
public void onConfigurationChanged(Configuration newConfig) {

View file

@ -197,4 +197,36 @@
app:roundAsCircle="true" />
</LinearLayout>
<LinearLayout
android:id="@+id/pipGroupCallOverlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/black"
android:gravity="center"
android:visibility="invisible">
<TextView
android:id="@+id/pipCallConversationNameTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="-30dp"
android:layout_marginBottom="15dp"
android:layout_marginStart="5dp"
android:layout_marginEnd="5dp"
android:textAlignment="center"
android:maxLines="3"
android:ellipsize="end"
android:textColor="@color/white"
android:textSize="16sp"
tools:text="our group call" />
<com.facebook.drawee.view.SimpleDraweeView
android:layout_width="80dp"
android:layout_height="80dp"
app:backgroundImage="@drawable/ic_circular_group"
app:roundAsCircle="true" />
</LinearLayout>
</RelativeLayout>