旋转90度时调整视图

时间:2018-11-13 11:30:15

标签: android rotation android-animation android-framelayout

我已经创建了一个布局,并且我想以编程方式将其旋转90度。旋转部分工作正常,但无法根据屏幕扩展/调整该布局的宽度和高度。

这是我的xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/cardview_lay"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout

    android:id="@+id/cardview_lay_vertical"
    android:layout_width="match_parent"
    android:layout_height="210dp"
    android:layout_gravity="center_vertical"
    android:layout_margin="15dp"
    android:background="@drawable/virtualcard_bg"
    android:orientation="vertical">

    <RelativeLayout
        android:id="@+id/card_details_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/world_map_image"
        android:padding="@dimen/activity_horizontal_margin">

        <RelativeLayout
            android:id="@+id/lay1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <TextView
                android:id="@+id/qrCode"
                android:layout_width="wrap_content"
                android:layout_height="48dp"
                android:layout_alignParentLeft="true"
                android:layout_toLeftOf="@+id/QrCode"
                android:gravity="center|left"
                android:text=""
                android:textColor="@color/black"
                android:textStyle="bold" />

            <ImageView
                android:id="@+id/QrCode"
                android:layout_width="48dp"
                android:layout_height="48dp"
                android:layout_alignParentRight="true" />
        </RelativeLayout>


        <TextView
            android:id="@+id/txtCardName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/lay1"
            android:gravity="center|left"
            android:text=""
            android:textAllCaps="true"
            android:textColor="@color/black"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/txtPolicyNumber"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/txtCardName"
            android:layout_marginTop="@dimen/activity_ten_margin"
            android:gravity="center|left"
            android:text=""
            android:textColor="@color/black"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/medilink_global"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/txtPolicyNumber"
            android:layout_marginTop="@dimen/activity_ten_margin"
            android:gravity="center|left"
            android:text=""
            android:textAllCaps="true"
            android:textColor="@color/black"
            android:textStyle="bold" />

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/medilink_global"
            android:layout_marginTop="@dimen/activity_horizontal_margin">

            <TextView
                android:id="@+id/txt"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_alignParentLeft="true"
                android:gravity="center|left"
                android:paddingBottom="@dimen/activity_margin_four"
                android:text="Member Since   "
                android:textAllCaps="true"
                android:textColor="@color/black" />

            <TextView
                android:id="@+id/txtmemberSince"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_toRightOf="@+id/txt"
                android:gravity="center|left"
                android:paddingBottom="@dimen/activity_margin_four"
                android:text=""
                android:textColor="@color/black"
                android:textStyle="bold" />


            <ImageView
                android:id="@+id/medilinkImg"
                android:layout_width="82dp"
                android:layout_height="30dp"
                android:layout_alignParentBottom="true"
                android:layout_alignParentRight="true"
                android:background="@drawable/image" />

        </RelativeLayout>
    </RelativeLayout>

</LinearLayout>

MainActivity中旋转的按钮侦听器代码为:

rotateIcon.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (rotateIsVisible) {
                    rotateIsVisible = false;
                    cardview_lay_vertical.animate().rotation(90).start();
                } else {
                    cardview_lay_vertical.animate().rotation(0).start();
                    rotateIsVisible = true;
                }
            }
        });

但是我面临的问题是我想在旋转时根据屏幕的宽度和高度来放大布局和所有文本。

预期结果: enter image description here

1 个答案:

答案 0 :(得分:0)

我通常创建第二个布局以提供屏幕方向,这可能是处理它的最佳方法。