0

The screen replicates a video call screen.Please see the image.

screenshot.

  • There are 2 boxes - green and black.
    • Green box - Remote camera view.
    • Black box is local camera view .

What I need is when clicked local camera view (black box) , it should expand to max size and the green box to take size of black box and bring to front. The functionality is exactly like a video call screen view switching. How can i achieve this size and order with a smooth transition .

pRaNaY
  • 24,642
  • 24
  • 96
  • 146
Harish Padmanabh
  • 307
  • 4
  • 17

2 Answers2

0

TranslationZ work like Z-index

this is in Java your xml be like:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:id="@+id/local_camera"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#5fccc8"
        android:orientation="vertical" />

    <LinearLayout
        android:id="@+id/remote_camera"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:background="#000000"
        android:orientation="vertical" />

</FrameLayout>

and your java code be like

boolean remote = false;
boolean local = true;
LinearLayout local_camera = findViewById(R.id.local_camera);
        LinearLayout remote_camera = findViewById(R.id.remote_camera);

        remote_camera.setOnClickListener(view -> {
            if (local) {

                ViewGroup.LayoutParams params = local_camera.getLayoutParams();
                params.height = getResources().getDimensionPixelSize(R.dimen.width_height);
                params.width = getResources().getDimensionPixelSize(R.dimen.width_height);
                local_camera.setLayoutParams(params);
                local_camera.setTranslationZ(90);

                ViewGroup.LayoutParams params_remote = remote_camera.getLayoutParams();
                params_remote.height = ViewGroup.LayoutParams.MATCH_PARENT;
                params_remote.width = ViewGroup.LayoutParams.MATCH_PARENT;
                remote_camera.setLayoutParams(params_remote);

                remote = true;
                local = false;
            }
        });

        local_camera.setOnClickListener(view -> {
            if (remote) {
                ViewGroup.LayoutParams params = remote_camera.getLayoutParams();
                params.height = getResources().getDimensionPixelSize(R.dimen.width_height);
                params.width = getResources().getDimensionPixelSize(R.dimen.width_height);
                remote_camera.setLayoutParams(params);


                ViewGroup.LayoutParams params_remote = local_camera.getLayoutParams();
                params_remote.height = ViewGroup.LayoutParams.MATCH_PARENT;
                params_remote.width = ViewGroup.LayoutParams.MATCH_PARENT;
                local_camera.setLayoutParams(params_remote);
                local_camera.setTranslationZ(0);

                local = true;
                remote = false;
            }
        });
Robin Hood
  • 710
  • 3
  • 16
  • Thanks for the answer , it works , but I am looking for a solution in jetpack Compose and not in xml. Can you please tell how the code will be in Compose?@Robin – Harish Padmanabh Oct 27 '22 at 09:49
0

You can use zIndex to change it:

Modifier.zIndex(zIndexNumber)

About the animation I think you can use animateFloatAsState you can check it here https://developer.android.com/jetpack/compose/animation

Thành Thỏ
  • 173
  • 1
  • 8