<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/layout_horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="hello my android , i'm obo" />
<View
android:layout_width="match_parent"
android:layout_height="20dp"
android:background="#FF0000" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="button" />
</LinearLayout>
</LinearLayout>
以上代码中id为layout_horizontal的LinearLayout是我们将要进行旋转的布局。需要注意的是,待旋转的布局的父布局必须是LinearLayout,比如这里id为layout_horizontal的LinearLayout的外面还必须套一个LinearLayout。
activity中的代码非常简单,思路是先获取到屏幕的尺寸,然后将id为layout_horizontal的LinearLayout的尺寸进行主动的设置,其宽为屏幕的高,其高为屏幕的宽,之后再旋转90度,旋转完之后进行位移,这里的位移是为了将旋转后的布局放置在屏幕中心。
public class HorizontalActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_horizontal);
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); // 获取屏幕的尺寸
int width = displayMetrics.widthPixels; // 屏幕宽
int height = displayMetrics.heightPixels; // 屏幕高
LinearLayout layout = (LinearLayout) findViewById(R.id.layout_horizontal); // 待旋转布局
layout.setLayoutParams(new LinearLayout.LayoutParams(height, width)); // 设置布局的宽和高,必须要和屏幕的反过来
layout.setRotation(90); // 顺时针旋转90度
layout.setY((height - width) / 2);
layout.setX((width - height) / 2); // 将布局位移到屏幕中心
}
}