android屏幕横纵切换解决办法

在android系统中,当进行横纵屏切换时,由于运行时配置发生了变化,android会默认将activity结束以及重新启动。为了防止activity重新启动,我们何以通过设置android:configChanges属性来达到不重启的目的。

    经过实测,发现android:configChanges="orientation",并不能达到效果。在不设置时,横、纵切换都是调用生命周期一次;而设置了该属性之后,横纵切换时还是调用生命周期各一次。而且在只设置了orientation之后,onConfigurationChanged方法也未被执行。


    在查阅了官方解决办法之后(:http://developer.android.com/guide/topics/resources/runtime-changes.html),发现里面提到了从Android 3.2 (API level 13)开始,在横纵切换时,screen size同样发生了变化,所以要加入screen size属性,所以正确的解决办法为android:configChanges="orientation|screenSize"。在查阅资料中发现,有很多解决办法中提到了keyboardHidden属性。

"keyboardHidden"属性的官方说明为键盘输入设备发生了变化,比如用户新加入了硬件键盘。

        经过实测keyboardHidden是跟软键盘弹出无关的属性,应该是用户在android设备中接入了新的硬件输入键盘。其实一般不会出现这种情况的,各位可以根据用户的实际使用场景看是否要增加这个属性。

     以下为

onConfigurationChanged方法实例,当设置android:configChanges="orientation|screenSize"时,会在发生横纵切换时执行该方法。

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    // Checks the orientation of the screen
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值