扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这篇文章给大家介绍Android应用中是如何实现横竖屏切换的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
创新互联公司专注于企业成都全网营销、网站重做改版、吉州网站定制设计、自适应品牌网站建设、H5页面制作、商城建设、集团公司官网建设、成都外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为吉州等各大城市提供网站开发制作服务。
横竖屏切换的过程,会经历onDestroy和onCreate。通俗点说,就是这个activity关闭了,有新起来一个activity。那么,前一个activity的数据肯定都不存在了。虽然这样的切换,你的EditText上输入的内容还在,但是一定要记得,成员变量都是空的啦。数据保存成了一个问题。
保存整个activity的方案
在Manifest里对于的activity加上这个配置就不会重走销毁和创建了,如下:
android:configChanges="orientation|keyboardHidden|screenSize"
不要高兴的太早,除非你不需要改变横竖屏的布局,否则这个方案仍然要有很多工作要做。
还是乖乖的保存数据吧
onRetainNonConfigurationInstance()被弃用了,我们还是用onSaveInstanceState吧。针对横竖屏不同的布局,我们只需在创建一个layout-land文件夹,里面放同名的布局文件,onCreate时会自动加载相对应的横竖屏布局。
在横竖屏切换的过程中会经历onSaveInstanceState,给你一个保存数据的机会:
@Override public void onSaveInstanceState(Bundle outState) { Log.i("linc", "onSaveInstanceState(Bundle)"); super.onSaveInstanceState(outState); outState.putString(TEXT_ONE, ""+editText1.getTag(R.id.tag_first));//avoid null point // outState.putSerializable();//object }
在onCreate中把数据取出来:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_land_port_switch); Log.e("linc","oncreate"); editText1 = (EditText)findViewById(R.id.txt1); // Restore saved state. if (savedInstanceState != null) { editText1.setTag(R.id.tag_first,savedInstanceState.getString(TEXT_ONE)); } }
关于Android应用中是如何实现横竖屏切换的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流