在两个布局之间旋转位置

时间:2015-04-16 13:18:01

标签: android layout position

我很感兴趣如何在两个布局(RelativeLayout)之间轻松旋转位置。我有两个RelativeLayout,当我先点击时我想转动它们的位置。 我正试图在控制台上创建动态位​​置,因此用户可以旋转他想要的位置。

enter image description here

我为此创建了自己的方法,但我想知道是否有更好更简单的解决方案。在那个方法中,我控制哪个框的内容和我用动画旋转内容。

修改 这是看起来像main_activity:

<LinearLayout
   android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:orientation="vertical">
           <RelativeLayout
               android:id="@+id/first"
               android:layout_width="fill_parent"
               android:layout_height="50dp"></RelativeLayout>
           <LinearLayout
               android:layout_width="fill_parent"
               android:layout_height="wrap_content"
               android:orientation="horizontal">
               <RelativeLayout
                   android:id="@+id/seconde"
                   android:layout_width="fill_parent"
                   android:layout_height="50dp"
                   android:layout_weight="1"></RelativeLayout>
               <RelativeLayout
                   android:id="@+id/third"
                   android:layout_width="fill_parent"
                   android:layout_height="50dp"
                   android:layout_weight="1"></RelativeLayout>
               </LinearLayout>
           </LinearLayout>

1 个答案:

答案 0 :(得分:0)

您可以简化布局:

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <RelativeLayout
        android:id="@+id/first"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:background="@android:color/holo_blue_bright" >
    </RelativeLayout>

    <View
        android:id="@+id/viewSeparatorHorizontal"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_marginTop="50dp" />

    <View
        android:id="@+id/viewSeparatorVertical"
        android:layout_width="1dp"
        android:layout_height="match_parent"
        android:layout_centerHorizontal="true" />

    <RelativeLayout
        android:id="@+id/seconde"
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/viewSeparatorHorizontal"
        android:layout_toLeftOf="@+id/viewSeparatorVertical"
        android:background="@android:color/holo_green_dark" >

    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/third"
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/viewSeparatorHorizontal"
        android:layout_toRightOf="@+id/seconde"
        android:background="@android:color/holo_orange_dark" >
    </RelativeLayout>

</RelativeLayout>

并使用此代码“旋转”组件:

private RelativeLayout first;
private RelativeLayout third;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.test);

    first = (RelativeLayout) findViewById(R.id.first);
    third = (RelativeLayout) findViewById(R.id.third);
}

public void invert(View v){
    LayoutParams params1 = (RelativeLayout.LayoutParams)first.getLayoutParams();
    LayoutParams params3 = (RelativeLayout.LayoutParams)third.getLayoutParams();

    first.setLayoutParams(params3);
    third.setLayoutParams(params1);
}