Herausforderung: Benutzerdefinierte Animation von ViewPager. Höhe der ausgewählten Elemente ändern (Ansicht falten)

Ich arbeite derzeit an einer benutzerdefinierten Animation zum Wechseln zwischen Seiten in ViewPager. Wenn ich nach links schiebe, bewegt sich die Ansicht nach links und von unten kommt die neue Ansicht nach vorne. Ich möchte die Ansicht, die sich nach links bewegt (über die ich verfüge), verkleinern wie auf den folgenden Bildern:

Auf dem zweiten und dritten Bild habe ich mir keine neue Ansicht in der Front vorgestellt, aber ich denke, das war nicht nötig. Haben Sie eine Idee, wie ich den Code ändern kann?

Ich möchte die Höhe von TableLayout, RelativeLayout und FrameLayout ändern und die Höhe beider TextViews beibehalten. Außerdem müsste ich die X-Position der gesamten Ansicht ändern.

Ich freue mich auf Ihre kreativen Antworten (Code). Unten füge ich meinen Code für die Animation hinzu.

import android.view.View;
import android.widget.RelativeLayout;
import android.annotation.SuppressLint;
import android.support.v4.view.ViewPager.PageTransformer;

public class DepthPageTransformer implements PageTransformer {
    private static float MIN_SCALE = 0.75f;

    @SuppressLint("NewApi")
    public void transformPage(View view, float position) {
        int pageWidth = view.getWidth();

        if (position < -1) { // [-Infinity,-1)
            // This page is way off-screen to the left.
            view.setAlpha(0);

        } else if (position <= 0) { // [-1,0]
            // Use the default slide transition when moving to the left page
            view.setTranslationX(0);
            view.setScaleX(1);
            view.setScaleY(1);
            //float scaleFactor = (1 - Math.abs(position));

            //WHAT TO PUT HERE TO ARCHIVE MY GOAL??

            //This is how I can get particular layouts:
            // RelativeLayout relativeLayout = (RelativeLayout) view.findViewById(R.id.fragment_object_canvas_RelativeLayout1);
            //relativeLayout.setScaleX(scaleFactor);
            //relativeLayout.setScaleY(scaleFactor);

        } else if (position <= 1) { // (0,1]
            // Fade the page out.
            view.setAlpha(1 - position);

            // Counteract the default slide transition
            view.setTranslationX(pageWidth * -position);
            //view.setRotation(1 - (position*360));

            // Scale the page down (between MIN_SCALE and 1)
            float scaleFactor = MIN_SCALE
                    + (1 - MIN_SCALE) * (1 - Math.abs(position));
            view.setScaleX(scaleFactor);
            view.setScaleY(scaleFactor);

        } else { // (1,+Infinity]
            // This page is way off-screen to the right.
            view.setAlpha(0);
        }
    }
}

AKTUALISIEREN:

Ich kann mit der Höhe der gesamten Ansicht (im Moment kann ich nur dies tun) mit dem folgenden Code manipulieren:

  LinearLayout relativeLayout = (LinearLayout) view.findViewById(R.id.fragment_object_canvas_linearLayout1);
            relativeLayout.setLayoutParams(new FrameLayout.LayoutParams(relativeLayout.getWidth(), NEW_HEIGHT_HERE)));

Ich bin mir jedoch nicht sicher, was ich in die Variable NEW_HEIGHT_HERE schreiben soll, damit es korrekt funktioniert ...

Antworten auf die Frage(2)

Ihre Antwort auf die Frage