Android 开发学习进程0.33 横竖屏切换
安卓横竖屏大多数已经在manifest文件中将activity使用android:screenOrientation="portrait"属性写死,如简单的界面切换可直接更改为"sensor"属性,但如复杂的界面需使用其他方法。
1监听横竖屏切换变化
<activity android:name=".MainActivity"
android:configChanges="orientation|keyboard|layoutDirection|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
以下是manifest文件中的配置,设置configchanges属性是为了重写设置切换监听方法,设置为orientation或orientation|keyboardHidden或不设置时,生命周期均会执行一次,设置android:configChanges="orientation|keyboardHidden|screenSize"android:configChanges="orientation|keyboardHidden|screenSize" 不重新走生命周期方法仅执行onConfigurationChanged方法,注意这个改变实在api 13开始的。而之前版本已经很少使用,不再详述。
代码中切换横竖屏的方法为 Activity.this.setRequestedOrientation 在设置后还需要setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR)方法恢复,这是由于设置方法相当于manifest文件设置,使用后就不会重力感应改变方向。如果不重走生命周期可以使用下方法
切换布局。
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){
Toast.makeText(getApplicationContext(), "横屏", Toast.LENGTH_SHORT).show();
//切换到横屏
//修改布局文件
setContentView(R.layout.activity_main);
//findViewById ....
}else{
Toast.makeText(getApplicationContext(), "竖屏", Toast.LENGTH_SHORT).show();
}
}
如果使用重走生命周期,可能遇到保存当前状态的问题。重写activity的onSaveInstanceState方法保存数据,数据以bundle形式保存,先将数据保存在方法形参中再执行super父方法。
保存后使用onRestoreInstanceState方法取出数据,在onCreate方法中可以取出保存的数据。
如果在资源文件夹多添加layout-land可以创建同名的布局文件,在横竖屏切换的过程中自动显示正确UI。
Android 开发学习进程0.33 横竖屏切换的更多相关文章
- Android 开发学习进程0.16 layout_weight属性 R文件关联XML Module
layout_weight属性 layout_weight属性我们常常用到,但有时候会发现它还有一些奇怪的属性,比如大多数使用时会把宽度设置成0,但要是宽度不设置成0会有什么效果? layout_we ...
- Android 开发学习进程0.19 webview 的使用
Android 中的webview android 中的webview是可以在app内部打开HTML等的网页,不必再打开浏览器,有两种实现方法,即webviewclient webChromeclie ...
- Android开发学习进程0.18 SharePreference的使用 AIDL
SharePreference SharePreference是一种持久化存储手段,使用场景很多,如第一次打开时加载的用户协议等.适合小数据单进程的应用.将数据以键值对的形式存储在XML中. 使用方式 ...
- Android 开发学习进程0.17 Android资源文件selector textview显示两种不同字体
selector 是安卓资源文件的一种,它可以使按钮等实现不同状态下的不同UI,不用在代码中实现,而使用方式有两种,一种在color文件下 创建.xml可以使按钮等字体在不同状态下的变化,其二是在dr ...
- Android 开发学习进程0.15 adb cardview framelayout 控件设置状态获取焦点
Android设备调试桥 即adb 使用adb进行无线调试的一些常用命令 adb tcpip 5555 设置调试端口为5555 防止冲突 adb shell ifconfig wlan0 查询局域网中 ...
- Android 开发学习进程0.27 kotlin使用 和viewbinding的使用
kotlin-android-extensions 插件被废弃 笔者曾经尝试写过一部分的kotlin代码 主要是项目中一些代码是kotlin完成的,其中我认为 kotlin的kotlin-androi ...
- Android 开发学习进程0.28 腾讯TBS接入和相关问题
TBS 的接入和使用 TBS 的接入 腾讯TBS是X5内核的升级版,可以当作webview 来打开 网页,可以以用来打开docx doc pdf 等文件,这里主要使用的是文件功能. 依赖接入 api ...
- Android 开发学习进程0.32 dwonloadmanager使用
downloadmanager时Android系统下载器,使用系统下载器可以避免用stream流读入内存可能导致的内存溢出问题.以下为downloadmanager初始化部分.apkurl为下载网络路 ...
- Android 开发学习进程0.14 Bindview recyclerview popwindow使用 window类属性使用
BindView ButterKnife 优势 绑定组件方便,使用简单 处理点击事件方便,如adapter中的viewholder 同时父组件绑定后子组件无需绑定 注意 在setcontentview ...
随机推荐
- 源码搭建Zabbix4.0.23LTS监控系统
实验环境 centos 7.5 主机名 IP地址 配置 应用 controlnode 172.16.1.120/24 4核/8G/60G java-1.8.0-openjdk zabbix serve ...
- 05 jumpserver权限管理
5.权限管理: 在同一个组下的用1户之间,资产是共享的. (1)为10.0.0.121_slavenode1资产授权: (2)为10.0.0.201_lc-pc资产授权: (3)查看授权列表:
- 26、mysqlsla慢查询日志分析工具
1.介绍: mysqlsla是hackmysql.com推出的一款MySQL的日志分析工具,可以分析mysql的慢查询日志.分析慢查询非常好用,能针 对库分析慢查询语句的执行频率.扫描的数据量.消耗时 ...
- Burning Bridges 求tarjan求割边
Burning Bridges 给出含有n个顶点和m条边的连通无向图,求出所有割边的序号. 1 #include <cstdio> 2 #include <cstring> 3 ...
- 二进制方式搭建Kubernetes集群
环境准备: 演练暂时用单节点一台master和一台node节点来进行部署搭建(kubernetes 1.19版本) 角色 IP 组件 master 10.129.246.114 kube-apiser ...
- Linux | 系统状态检测
ifconfig ifconfig 命令用于获取网卡配置与网络状态等信息,格式 ifconfig[网络设备][参数] 使用 ifconfig 命令来查看本机当前的网卡配置与网络状态等信息时,其实主要查 ...
- IP数据包格式与ARP转发原理
一.网络层简介1.网络层功能2.网络层协议字段二.ICMP与封装三.ARP协议与ARP欺骗1.ARP协议2.ARP欺骗 1.网络层功能 1. 定义了基于IP地址的逻辑地址2. 连接不同的媒介3. 选择 ...
- python encode decode
Python encode()encode() 方法以 encoding 指定的编码格式编码字符串.errors参数可以指定不同的错误处理方案.写法:str.encode(encoding='UTF- ...
- C语言:编译具体过程及隐藏
对于平常应用程序的开发,很少有人会关注编译和链接的过程,因为我们使用的工具一般都是流行的集成开发环境(IDE),比如 Visual Studio.Dev C++.C-Free 等.这些功能强大的 ID ...
- SLAM十四讲第二版项目代码总结
github地址:https://github.com/gaoxiang12/slambook2/tree/master/ch13 双目视觉里程计 头文件 所有的类都在myslam命名空间中 1.co ...