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); 
        } 


你可能感兴趣的:(Android 在同一个Activity使用不同layout)