手机横竖屏切换处理

Android手机运行时候,一般用户都是竖屏的,但是经常不经意间会旋转手机,这时候程序就会出现异常,以为在选在屏幕时候重新装载了Acitivity,那么如何解决这个问题呢,总结如下三条:

1:

   在AndroidManifest.xml中设置Activity的方向属性。

   1.1. 固定为竖屏

<activity android:name="MyActivity" android:screenOrientation="portrait"/>

  1.2. 固定为横屏

<activity android:name="MyActivity" android:screenOrientation="landscape"/>

2:

   在代码中设置Activity的方向改变的处理。

  这种方式的前提是在AndroidManifest.xml中注册configChanges属性,然后在代码中重写onConfigurationChanged

,这样在横竖屏切换前会调用我们的代码,可以以此为切入点做一些处理。

<activity 
        android:name="MyActivity" 
        android:screenOrientation="landscape"
        android:configChanges="orientation"
        >

orientation代表横竖屏切换的变化,关于android:configChanges属性的参数可以

参考: http://www.cnblogs.com/adamzuocy/archive/2009/10/15/1583670.html

 

@Override
    public void onConfigurationChanged(Configuration newConfig) {
        if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
            //说明当前转换成了横屏,做相应处理
        }
        else if(this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT){
            //说明当前转换成了竖屏,做相应处理
        }
        super.onConfigurationChanged(newConfig);
    }

这样做在横竖屏切换时候就不会重新装载Activity了。我们可以发现在切屏时候onCreate()没有重新调用。

3:

 与第二种方式有着异曲同工之妙的是第三种方法:

 重写onSaveInstanceState(),onRestoreInstanceState()

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onRestoreInstanceState(savedInstanceState);
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        // TODO Auto-generated method stub
        super.onSaveInstanceState(outState);
    }

横竖屏切换时候的顺序是这样的

onSaveInstanceState()----->重新载入Activity----->onRestoreInstanceState()

这样我们同样可以捕获切屏时间,加入我们的处理了。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值