横屏 竖屏
方法一:
*注意在setContentView()之前
if(this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//横屏
//setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//竖屏
}
方案二:
在项目的AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation属性,它有以下几个参数:
“unspecified”:默认值 由系统来判断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显示方向.
“landscape”:横屏显示(宽比高要长)
“portrait”:竖屏显示(高比宽要长)
“user”:用户当前首选的方向
“behind”:和该Activity下面的那个Activity的方向一致(在Activity堆栈中的)
“sensor”:有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换。
“nosensor”:忽略物理感应器,这样就不会随着用户旋转设备而更改了("unspecified"设置除外)。
布局旋转
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); // 获取屏幕的尺寸
int width = displayMetrics.widthPixels; // 屏幕宽
int height = displayMetrics.heightPixels; // 屏幕高
LinearLayout layout = (LinearLayout) findViewById(R.id.layout_horizontal); // 待旋转布局
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(height, width);
layout.setLayoutParams(layoutParams); // 设置布局的宽和高,必须要和屏幕的反过来
layout.setRotation(90); // 顺时针旋转90度
layout.setY((height - width) / 2);
layout.setX((width - height) / 2); // 将布局位移到屏幕中心