默认情况下Activity进行屏幕旋转会自动进行onDestroy并重新onCreate

一、非默认情况下

在AndroidManifest.xml的Activity中配置

    <activityandroid:name=".ui.activity.XXXXXActivity"android:launchMode="singleTask"android:screenOrientation="portrait"android:configChanges="keyboardHidden|orientation|screenSize"android:windowSoftInputMode="adjustPan" />

(1)禁止屏幕旋转

  //始终竖屏android:screenOrientation="portrait"//始终横屏android:screenOrientation="landscape"

(2)Activity跟随旋转但不销毁和重启

  android:configChanges="keyboardHidden|orientation|screenSize"

然后在Activity中重写onConfigurationChanged方法
(仅作为监听屏幕横竖屏状态,吐司提示,可以不要)

  @Overridepublic void onConfigurationChanged(Configuration newConfig) {super.onConfigurationChanged(newConfig);if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){Toast.makeText(this,"竖屏模式",Toast.LENGTH_SHORT).show();}else{Toast.makeText(this,"横屏模式",Toast.LENGTH_SHORT).show();}}
public static final int ORIENTATION_PORTRAIT = 1;  // 标识竖屏
public static final int ORIENTATION_LANDSCAPE = 2; //标识横屏

二、通过 layout-land 构建专属的横屏布局模式

1、首先在工程res目录下新建一个layout-land

2、其次在layout-land目录中新建一个同名但是是横屏效果的布局

3、代码

   @Overridepublic void onClick(View view) {//按钮控制切换横竖屏  R.id.img_rotate : 自己定义的一个按钮if (view.getId() == R.id.img_rotate){int screenNum = getResources().getConfiguration().orientation;//判断屏幕当前状态if (screenNum != Configuration.ORIENTATION_LANDSCAPE){//切换成横屏setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);}else {//切换成竖屏setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);}}}

按照上面的流程,构建需要横屏效果的layout-land目录布局,就可以达到有效解决屏幕横竖屏切换啦

三、其他系列文章

Android基础篇 屏幕横竖屏切换以及生命周期管理 上篇
https://blog.csdn.net/weixin_44720673/article/details/114628214

Android基础篇 屏幕横竖屏切换(layout-land)下篇相关推荐

  1. 解决Android手机 屏幕横竖屏切换

    Android中当屏幕横竖屏切换时,Activity的生命周期是重新加载(说明当前的Activity给销毁了,但又重新执行加载),怎么使屏幕横竖屏切换时,当前的Activity不销毁呢? 1. 在An ...

  2. android横竖屏切换动画,Android应用怎么实现屏幕横竖屏切换功能

    Android应用怎么实现屏幕横竖屏切换功能 发布时间:2020-11-26 15:48:57 来源:亿速云 阅读:121 作者:Leah Android应用怎么实现屏幕横竖屏切换功能?针对这个问题, ...

  3. android 获得屏幕方向,Android 获取设置屏幕横竖屏

    Android 获取设置屏幕横竖屏 发布时间:2020-08-06 03:23:17 来源:51CTO 阅读:351 作者:huyanruirui 方法一: screenOrientation = a ...

  4. cocos2d-x游戏开发屏幕横竖屏切换

    android解决方案: 1.在游戏的主activity中编写一个静态方法(继承Cocos2dxActivity) public static void changedActivityOrientat ...

  5. ios 旋转屏幕试图切换_iOS屏幕横竖屏切换

    iOS屏幕横竖屏切换 胡东东博客 • 2020 年 10 月 25 日 搜了网上的教程是真的乱,废话不多说,这里从启动到具体的VC,横竖屏切换完美搞定. 如果你的app只需要支持一个方向,那么不需要看 ...

  6. android compose webview视频播放横竖屏切换

    先看演示 compose webview横竖屏切换 1.添加依赖: 文档 implementation "com.google.accompanist:accompanist-webview ...

  7. android判断手机屏幕横竖屏

    在一个Activity显示中判断当前屏幕横竖屏情况有几种方法: Configuration configuration = getResources().getConfiguration(); if ...

  8. android 屏幕横竖屏切换时生命周期运行详解,创建横屏layout,has no declaration in the base

    横屏代码 1.配置文件设置 android:screenOrientation="landscape" 2.java代码设置 setRequestedOrientation(Act ...

  9. Android横竖屏切换小结

    (老样子,图片啥的详细文档,可以下载后观看 http://files.cnblogs.com/franksunny/635350788930000000.pdf) Android手机或平板都会存在横竖 ...

最新文章

  1. OFDM调制系统传输的复信号从何而来?
  2. 404 – File or directory not found.
  3. 世界奥运建筑文学第一书  北京奥运长篇纪实第一人
  4. 摆脱加卡他卡_如何通过三个简单的步骤摆脱“故事卡地狱”。
  5. Redis数据库-键的生存时间与过期时间的区别
  6. java运输_JAVA-基础-方法
  7. linux内核module_init,Linux内核模块中module_init和init_module有什么区别?
  8. 武汉街头出现手机无线充电路灯,极速快充,但需注意这一点!
  9. full outer join 与full join的区别_基础小白的SQL的JOIN语法解析
  10. 浅析免费加密软件应该如何选择性下载
  11. max3232ese_MAX3232CSE使用指南,MAX3232CES和MAX3232ESE有什么区别?
  12. iOS依赖注入框架系列(三):模块化Typhoon
  13. 善于抓住80后消费者的消费心理
  14. JavaScript级联链表
  15. 设计模式之 Vistor 访问者模式:Swift 实现
  16. 文本相似度 Text Similarity
  17. 判断手机号输入的是否正确
  18. K8s 架构简介(一)
  19. python数据可视化——英雄联盟人物战力分析(条形图)
  20. 360安装 css3插件,Omi官方插件系列 。。支持CSS3 Transform设置

热门文章

  1. 消息中心构架设计说明书
  2. git报错ssh: Could not resolve hostname dev-nys: Name or service not known fatal: Could not read from r
  3. android8.1系统静默安装问题(无须手动点击)
  4. 上传本地.xlsx(.xls)文件,实现页面表格数据预览
  5. Javaweb(邮件发送)
  6. mybatis-plus存数组对象,并从数据库查出这个数组
  7. [Simulink] 代数环问题笔记
  8. xctf攻防世界 MISC高手进阶区 黄金六年
  9. OC基础语法-1.OC和C语言的对比
  10. 洗地机充电底座语音芯片选型?NV040DS语音芯片