Android 在同一个Activity使用不同layout

需求如下:

Activity A屏幕纵向,Activity B横向,需要让用户在A跳转至B,在B输入资料后把输入结果返回A。


坑1:在B获取成功后返回A,屏幕会有短暂黑屏

坑2:在A设置startActivityForResult跳转至B,同时重写onResult接收B返回内容,B代码调用setResult,需要A的启动模式设置为SingleTask或SingleInstance,设置后发现在A调用startActivityForResult会立即回调onResult


换了个解决问题思路:一个Activity加载layoutA和layoutB

但需要解决:

1、android屏幕纵横屏切换,Activity的onDestroy和onCreate方法会被调用,需要避免Activity在转屏时销毁

2、动态更改屏幕方向


解决问题1:

修改AndroidManifest.xml,在activity属性中加入: 

android:configChanges=”orientation|keyboardHidden”
android:configChanges,这个方法主要是负责列出清单,当清单上用户指定的设置改变时,Activity会自己处理这些变化。
orientation,屏幕界面旋转(可能是用户手动旋转的),【注意:如果你的开发API等级等于或高于13,你还需要设置screenSize,因为screenSize会在屏幕旋转时改变】
keyboardHidden,键盘辅助功能改变


解决问题2:

a)在AndroidManifest.xml文件里设置默认方向,不然程序不能正常工作。

android:screenOrientation="portrait"

b)
参考代码:
 public void onClick(View v) { 
        //如果是竖排,则改为横排 
        if(getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) 
        { 
         setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
        } 
        //如果是横排,则改为竖排 
        else if(getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) 
        { 
         setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
        } 


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值