android_判断横竖屏以及设置方式

本文介绍了如何使用Android程序判断设备横竖屏,并通过代码实现设置显示方向的功能,包括利用DisplayMetrics获取屏幕尺寸信息及使用resources.getConfiguration().orientation进行判断。同时,提供了在Manifest文件中配置和代码中设置显示方向的方法,以及横竖屏切换时涉及的生命周期问题解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

判断横竖屏:

方式一:

//调用getWidth()或getHeight()的方法已经过期了
//int width = getWindowManager().getDefaultDisplay().getWidth();
//int height = getWindowManager().getDefaultDisplay().getHeight();
		
//DisplayMetrics:A structure describing general information about a display,
//such as its size, density, and font scaling.
//初始化一个DisplayMetrics对象
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels;
int height = dm.heightPixels;
if(width < height){
<span style="white-space:pre">	</span>//竖屏
<span style="white-space:pre">	</span>tv.setText("我是竖屏!");
}else{
<span style="white-space:pre">	</span>//横屏
<span style="white-space:pre">	</span>tv.setText("我是横屏!");
}
方式二:

if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT){
	//竖屏
	tv.setText("我是竖屏!");
}else{
	//横屏
	tv.setText("我是横屏!");
}


设置方式:

方法一:在Manifest文件中配置

在项目的AndroidManifest.xml中找到你所指定的activity,加上android:screenOrientation属性,它有以下几个参数:
"unspecified":默认值 由系统来判断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显示方向。
"landscape":横屏显示(宽比高要长) 
"portrait":竖屏显示(高比宽要长) 
"user":用户当前首选的方向 
"behind":和该Activity下面的那个Activity的方向一致(在Activity堆栈中的) 
"sensor":有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换。 
"nosensor":忽略物理感应器,这样就不会随着用户旋转设备而更改了("unspecified"设置除外)。


方法二:代码设置

设置横屏代码:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//横屏

设置竖屏代码:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//竖屏


另外,手机横竖屏切换的时候会涉及到生命周期的问题。通过给相应的activity设置android:configChanges属性来解决。

android:configChanges="orientation|keyboardHidden|screenSize"
细节性的问题还有待验证,属性值与版本之间有一定的关系



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值