Android:实时改变配置

Android通过终止、重启应用程序来重新加载资源文件,以做到对语言、区域和硬件实时变化的支持。

 

它的默认的行为不是总是方便和令人满意的,尤其当配置变化(如屏幕方向和键盘可视)、用户旋转设备或划出键盘等。你可以通过监测和响应定制你的应用程序来对这些变化作出响应。

 

为了能让Activity能监听实时的配置变化,需要在manifest节点里添加“android:configChanges”特性,指定你要处理的配置变化事件。

 

接下来的列表给出了你可以指定的配置变化的事件值:

 

❑ orientation                             屏幕在纵向和横向间旋转。

❑ keyboardHidden                    键盘显示或隐藏。

❑ fontScale                                 用户变更了首选的字体大小。

❑ locale                                       用户选择了不同的语言设定。

❑ keyboard                                 键盘类型变更,例如手机从12键盘切换到全键盘

❑ touchscreen或navigation    键盘或导航方式变化,一般不会发生这样的事件。

 

你可以选择捕获多个事件,通过在各事件值间使用“|”。

 

接下来的代码片段显示了Activity要捕获屏幕方向和键盘可视的事件:

 

Java代码 
  1. <activity android:name=”.TodoList”  
  2.   
  3. android:label=”@string/app_name”  
  4.   
  5. android:theme=”@style/TodoTheme”  
  6.   
  7. android:configChanges=”orientation|keyboard”/>  

 

 

增加这个特性就会强制应用程序在指定的配置变化时不用再重新启动,而是触发Activity中的onConfigurationChanged方法。如下面的代码片段所示,override这个方法去捕获配置变化,通过传入的Configuration 对象的值进行合适的处理。需要提醒的是需要调用父类的方法,并且要重新加载Activity使用的资源,以防有变更。

 

Java代码 
  1. @Override  
  2.   
  3. public void onConfigurationChanged(Configuration _newConfig) {  
  4.   
  5. super.onConfigurationChanged(_newConfig);  
  6.   
  7.    
  8.   
  9. [ ... 基于资源值更新UI ... ]  
  10.   
  11.    
  12.   
  13. if (_newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {  
  14.   
  15. [ ... 对不同的屏幕方向作出处理 ... ]  
  16.   
  17. }  
  18.   
  19.    
  20.   
  21. if (_newConfig.keyboardHidden == Configuration.KEYBOARDHIDDEN_NO) {  
  22.   
  23. [ ... 对键盘可见作出处理 ... ]  
  24.   
  25. }  
  26.   
  27. }  

 

 

当onConfigurationChanged 被调用时,Activity的资源变量都已经用新的值进行了更新,所以它们是安全的。

 

任何你没有显式指明的配置变化事件,都将由应用程序捕获,而且仍然会引起应用程序的重启,而不会调用onConfigurationChanged 方法。

 

Appium 安卓环境的配置 在使用模拟器的时候,除了慢,工作的非常好。因为在聚焦输入框的时候,弹出了搜狐输入法,干扰了 send_key 方法。这三点都做到的情况下,我们要看下 devices 的情况,因为运行 appium 测试脚本前要确保,devices 连接上了。如果使用的是 Appium.dmg 安装的 Appium,那要设置 custom android sdk, 如图。我们关掉模拟器,因为模拟器实在太慢了。(在模拟器上运行过 sample code, 都是能正常运行的。不过我遇到了一个问题,海信的手机没法识别出来。 阅读详情

相关推荐

Tauri 2.x 安卓开发实战:从环境配置到APK打包全流程解析

本文详细解析了Tauri 2.x框架下进行安卓应用开发的完整流程。从Rust、Node.js、Java及安卓SDK等开发环境配置入手,逐步指导项目创建、标识符修改与安卓工程初始化。重点介绍了使用`pnpm tauri android dev`命令进行高效开发调试,以及通过`pnpm tauri android build`命令构建并签名可发布APK的实战步骤,帮助开发者快速掌握这一跨平台开发技术。

cuda7parallel的博客 1016

关于解决WIN8系统下QT5.6编译报错的问题

    笔者是初次接触QT,由于系统是WIN8.1的原因只能选择了QT5.6版本,这也是笔者第一篇博客,如有叙述不妥之处还请谅解。     编译器使用的是visual studio 2015,下面来介绍遇到的问题:     经过自动识别配置后编译遇到的问题大概是这样的(问题描述来自网络):   14:24:34: 为项目untitled2执行步骤 ... 14:24:34: 配置没有改变...

sj18730920125的博客 2208

QML 地图修改插件源码(三),Map在Plugin中设置加载地图类型

常用的地图种类分为交通图,地形图,卫星图等等,在QML的Map(以OSM地图为例)中提供activeMapType属性用于读取当前显示的地图类型(注意:该属性为只读属性,不能用于赋值),QML中地图的加载寻找根据瓦片的文件名进行查找,例如名为"osm_100-l-5-2-2-3.png"的瓦片,其中5代表了该地图的类型

zjgo007的专栏 3162

配置没有改变, 跳过 qmake 步骤。[qt]

QT安装完之后,出现 11:55:55: 配置没有改变, 跳过 qmake 步骤。 11:55:56: 正在启动 "C:\MinGW\bin\mingw32-make.exe" 重新安装QT creator和 minGW,依然不能出现跳过的提示。 重新安装 MIngw-gcc440的GCC环境,再次重新安装QT-opensource-x86...

zhjmyx的专栏 7899

soul聊天协议逆向

通过观察上面的CFG发现,该混淆符合以下逻辑,整体思路就是先查找主分发器,一般被引用次数最多的那个块就是主分发器,引用主分发器的块大概率是真实块,再使用unicorn模拟执行,遍历每一个分支,记录每一个块,如果某一个块是上次记录的块则也为真实块,无后继的块则为retn块,剩下的就是无用块。通过Frida Hook libc.so后发现,聊天协议走的是JAVA层的socket,然后Hook JAVA层相关函数得到如下调用堆栈。里面调用的函数不是很多,所以。不行不行,革命要彻底!

2503_90751789的博客 3207

用STM32CubeMX和HAL库,5分钟搞定TB6612驱动直流电机(附完整代码)

本文详细介绍了如何使用STM32CubeMX和HAL库快速配置TB6612驱动直流电机,包括硬件连接、CubeMX工程配置、电机驱动逻辑实现及进阶优化技巧。通过图形化工具和代码示例,即使是新手也能在5分钟内完成电机调速系统的搭建,大幅提升开发效率。

weixin_26854829的博客 266

error: undefined reference to ‘vtable for …’

这个报警就是子类没有实现父类的纯虚函数,奇怪的是自定义的虚函数都已经进行了定义,这个时候需要留意还有一种情况就是Qt中一个类继承了QObject,而且添加了Q_OBJECT宏,此时就可能出现上面的异常。

lswdcyy的博客 3755

从零组装一台会‘看’的无人机:手把手教你配置NUC机载电脑与D435深度相机(环境搭建篇)

本文详细介绍了如何从零开始组装一台具备视觉能力的智能无人机,重点讲解了NUC机载电脑与D435深度相机的配置方法。通过Ubuntu系统安装、ROS环境搭建、深度学习框架配置等步骤,帮助开发者实现无人机的自主避障和目标跟踪功能。文章还提供了性能优化和常见问题解决方案,是无人机视觉系统开发的实用指南。

weixin_30915275的博客 396

Qt编译出错

编译环境为win7 64位, Qt 版本为qt-opensource-windows-x86-mingw492-5.6.1 最近重新拿 《精通Qt4编程》这本书来学习,在编译书带的源代码时,报错。 编译输出如下: 20:41:54: 为项目direct执行步骤 ... 20:41:54: 配置没有改变, 跳过 qmake 步骤。 20:41:54: 正在启动 "D:\Qt\Qt5

qdwx724的专栏 1万+

计算文本相似度的常用算法

NLP、数据挖掘领域中,文本分析是一个很重要的领域,这有助于我们去让计算机理解语言的作用和使用。文本分析是数据挖掘的重要手段,利用文本分析,我们将很快的读取到一本书、一篇文章、一段话中的关键词和核心思想,而文本相似度就是我们用来剔除无用信息或者重复信息的重要手段,让计算机去找文本中的不同。 在生活中,信息检索、数据挖掘、机器翻译、文档复制检测等领域都应用到“文本相似度”。文本不仅仅是文字,文本相似度的应用更广,除了文字的匹配,还可以是图片、音频等,因为它们的实质都是在计算机中都是以二进制的方式存在的。相.

氧小氢的博客 2万+

Qt Quick/QML入门到精通_专栏demo对应文章目录(目前50个左右demo/长期更新)

自定义图标下拉列表框的效果如下所示:自定义三态按钮的效果如下所示:传送门:53.qt quick-自定义三态按钮、自定义图标下拉列表框_诺谦的博客-优快云博客传送门:59.qt quick-qml调色板(颜色取色器)实现、自定义QQuickStyle样式_诺谦的博客-优快云博客63.qt quick-QML侧边滑动栏(不需要任何图片资源,支持自定义左右方向和大小)_诺谦的博客-优快云博客_qt实现好看侧边栏。...

抵抗时间扭曲,坚持做一件有意义的事 2万+

配置Android Studio安卓模拟器

以上是创建AVD的两个方法,希望能对你有所帮助。

2301_81385743的博客 2万+

MediaPipe 教程:从安装到应用-全网最全

MediaPipe是Google推出的开源框架,专为构建机器学习管道设计,可以高效处理视频、音频等时间序列数据。本文教程从安装到应用逐步讲解: 安装步骤简单,只需通过pip安装mediapipe包并验证版本; 重点演示人体姿态检测功能,可识别33个身体关键点; 提供基础代码实现,包括视频捕获、关键点检测与可视化; 强调模块化开发,将功能封装成类以提高代码复用性。 教程适合初学者,通过清晰指引和实用代码示例,帮助快速实现计算机视觉应用。

FJN110的博客 1563

配置Qt Android安卓环境

本文是一份Qt Creator 安卓开发环境搭建的图文教程,面向 Windows 系统用户,完整覆盖从 Qt 安装到模拟器成功运行的全流程,同时针对性解决国内用户常见的配置、报错问题。

fojoker的博客 665

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Android Screen Monitor:安卓开发者的实时屏幕监控终极指南

想要高效调试Android应用却苦于繁琐的屏幕截图和录屏操作?Android Screen Monitor(ASM)作为一款专业的实时屏幕监控工具,为开发者提供了完美的解决方案。这款基于Android Debug Bridge(adb)的客户端工具能够持续接收设备或模拟器的帧缓冲数据,并将画面实时传输到你的桌面窗口。 ## 🚀 为什么选择Android Screen Monitor? **实

gitblog_00899的博客 897

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Live Activities:提高Android应用的实时交互性

Live Activities 是 Android 14 新引入的一项功能,旨在通过动态更新通知,为用户提供实时信息。与传统的静态通知不同,Live Activities 能够在用户的锁屏、通知栏及其他交互区域中展示实时数据。通过这种方式,应用可以更灵活地与用户互动,特别适用于那些需要持续更新的应用场景,比如体育赛事、外卖配送、航班信息等。希望通过本篇文章,你能更好地理解 Live Activities 的功能和实现方法,能够在自己的 Android 应用中使用这一功能,提高用户的互动体验。

m0_74131274的博客 2310

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

实时改变配置

Android通过终止、重启应用程序来重新加载资源文件,以做到对语言、区域和硬件实时变化的支持。 它的默认的行为不是总是方便和令人满意的,尤其当配置变化(如屏幕方向和键盘可视)、用户旋转设备或划出键盘等。你可以通过监测和响应定制你的应用程序来对这些变化作出响应。 为了能让Activity能监听实时的配置变化,需要在manifest节点里添加“android:conf...

de14141983的专栏 176

Android Screen Monitor:专业级安卓设备屏幕实时监控解决方案

Android Screen Monitor(ASM)是一款基于Java开发的跨平台工具,专为开发者提供实时安卓设备屏幕监控能力。通过深度集成Android Debug Bridge(adb)协议,ASM能够稳定连接到设备端口5037,持续捕获帧缓冲区数据并将实时画面传输到桌面窗口,为移动应用调试和演示提供强大支持。 ## 🚀 核心技术架构解析 ASM采用模块化设计架构,核心组件包括: *

gitblog_00643的博客 1098

Unity2019一键配置安卓环境-告别复杂的安卓配置环境流程

Unity 2019 一键配置安卓环境 本文提供全流程,中文翻译。 助力了解 Unity 2019 一键配置安卓环境流程 为初学者节省宝贵的时间,避免采坑! 这次 2019大更 中,有一项对于初学者非常友好 那就是 一键安装安卓环境配置 从而避免复杂的环境配置流程。对于刚入门的初学者来讲,真的是福音。 直接打包 安卓Apk 报错一堆 一切都由Unity来完成 经过几个提示,就会自动显示打包成功,一个错都不会报

Chinar优快云的博客 2万+

安卓开发 Android Studio安装教程

智能移动终端APP现在十分普及,一个是苹果APP,一个是安卓APP。工欲善其事必先利其器,为了更好地进行安卓APP开发

m0_65489276的博客 9226

eclipse安卓开发环境配置全流程

eclipse安卓开发环境配置全流程前言eclipse安卓开发环境的配置:1.jdk及eclipse的安装配置2.Android SDK的安装配置3.eclipse ADT 的安装配置4.安卓依赖库的手动添加 前言 流行的安卓开发软件有eclipse和Android studio,相对于专业的安卓开发,Android studio肯定是更强大一点,但有点吃配置,电脑性能差的用eclipse也可以的...

全栈菜鸟的博客 5061

android安卓用Rime

在安卓通过小企鹅 fcitx-android 输入法用 RIME

iTom's blog 4048

Android Screen Monitor 终极使用指南:实时监控安卓设备屏幕

Android Screen Monitor(简称ASM)是一款功能强大的安卓设备屏幕实时监控工具,能够帮助开发者高效进行应用调试和界面展示。本指南将全面介绍这款工具的使用方法和技巧。 ## 工具概述与核心价值 ASM作为Android Debug Bridge(adb)的客户端应用,通过连接adb的5037端口,持续接收设备或模拟器的帧缓冲区数据,并将图像实时传输到桌面窗口显示。对于安卓应用

gitblog_00768的博客 1143

安卓termux-debian配置

但是界面没有对pad做过优化,在pad的浏览器上键鼠优化的也不好,最后在linux的浏览器里面可以完整的跑online——就是有点卡。——换源,当然建议开着魔法,然后进入到groups, 选择all mirrors, 记得在回车之前按一下空格选定,看到空格里面有星号 (*) 才是选定。改语言,py基本上不用配置,C语言的编译器和调试器前面装过了,扩展也是直接装,但是debug, 我之前一直连接不上GDB, 后面用。上面已经把中文包安装完了,系统语言和字体也处理完了,找到设置,换一下界面语言就可以了。

m0_58759897的博客 2572
上一篇: 假设你的月收入只有2000元!(如何花、最大化价值)
下一篇: Android 机器人:使用系统资源
SleepInDelphi
博客等级 码龄19年 32粉丝 388原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值