android切换横竖屏

1.manifest中配置横竖屏模式

当我们创建一个新的工程的时候是会随着手机横着拿和竖着拿而切换横竖屏的,如果想要只竖屏或只能横屏则需要在manifest中设置。

找到对应的activity给其添加android:screenOrientation属性,其有以下几个值:

unspecified,默认值,由系统而定。

landscape,横屏显示,宽度大于高度。

portrait,竖屏显示,高度大于宽度。

user,当前用户首选的方向。

behind,和该Activity下面的一个Activity(在Activity堆栈中的下面)绑定,与其方向一致。

sensor,由物理感应器来定。

nosensor,不随着物理感应器变化。

在代码中可用Activity.setRequestedOrientation函数来设置。

2.自动识别的res资源

可以在res目录下建立layout-land和layout-port目录,系统将自动把layout-land对应横屏,layout-port对应竖屏。

若两个目录下都有一个main.xml,横屏时将会调用layout-land/main.xml,竖屏时将会调用layout-port/main.xml。

3.获得当前是横屏还是竖屏

通过this.getResources().getConfiguration().orientation来判断当前是横屏还是竖屏。

=Configuration.ORIENTATION_LANDSCAPE,则是横屏

=Configuration.ORIENTATION_PORTRAIT,则是竖屏

当我们切换横竖屏的时候系统会将重新实例化Activity,当然也就会重新响应OnCreate等函数。

而重新实例化毫无疑问原本Activity中的变量值就都没了,这往往不是我们所希望的。

如果不想切换横竖屏的时候重新实例化则需要在manifest的Activity中加一条属性:android:configChanges="orientation"。

这时候Activity不会被重新实例化,也就不会响应OnCreate方法,而且也不会调用onPause和onResume方法,而是会响应onConfigurationChanged方法,切换横竖屏需要的一些操作可以在次方法中完成。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值