QMUI2终于来了,被⼤佬问到⾃闭
⾸先要说的是,这个版本与 1.x 版本并不完全兼容,有很多资源的增删改和组件接⼝与实现的变更,所以升级到 2.x 版本可能需要稍费⼀点时间,特别是资源配置的变更,可能导致虽然编译没问题,但是UI显⽰却不正确的现象。 (特别是在⽂档还没有完善的情况下,这个锅我背了,但还是不可能那么快完善)
av演员引⼊ QMUI 2
def qmui_version = '2.0.0-alpha02'
implementation "com.qmuiteam:qmui:$qmui_version"
implementation "com.qmuiteam:arch:$qmui_version"
漂亮的空间留言kapt "com.qmuiteam:arch-compiler:$qmui_version" // use annotationProcessor if java
Androidx
迁移到 androidx 的呼声在 github 上是⾮常⾼的,⼀部分⼈是想要查看源码⽅便⼀点,另⼀部分⼈我估计是并不知道 jetifier 的⽅式可以在编译时将 support 包转换为 androidx。
另⼀个修改是最低⽀持版本提升到了 API 19。 ⽬前都 2019 年,我都想直接提升到 API 21 了,但还是不敢太激进,只能慢慢来吧。Dark Mode / 换肤
Android 10 提供了 Dark Mode 的⽀持,官⽅提供了两种实现⽅式:
⼀种是在 value-night, drawable-night 放置 Dark Mode 资源。 当 Dark Mode 打开时,Activity会被重新创建, 然后从 *-night ⽬录读取资源。
另⼀种是在 AndroidManifest ⽂件中为 Activity 的 configChanges 加上 uiMode, 不重新重建 Activity, ⽽⾛ onConfigurationChanged。
rain的演唱会在 onConfigurationChanged ⾥判断当前 uiMode, 然后做⾃定义处理。
第⼀种⽅式就是简单,但是它有两个弊端:
Dark Mode 切换时,它需要重建整个 Activity,⼀般情况还好,你感知不到重建这个过程,但是如果 View 特别⼤,单单创建 View 就⾮常耗时了,那么就会明显感知到⿊屏(很多产品喜欢把界⾯逻辑搞得特别复杂,例如 ViewPager 嵌套 ViewPager, 再嵌套
ViewPager, ⽽且每个 Pager 都还巨复杂)
2019高考最高分另外⼀点就是,既然已经⽀持⼀套⽪肤,为何不能多⽀持⼏套?例如全⿊⽩版(伪墨⽔屏)
因此,QMUI 推荐采取第⼆种⽅式,因此 QMUI 提供了换肤功能的⽀持,夜间模式只是在 onConfigurationChanged 时调⽤⼀下换肤接⼝⽽已。 当然,开发者也可以创建 *-night ⽂件夹,并在⾥⾯配置 qmui 的各种 color/drawable 设置,以第⼀种⽅式去完成夜间模式的适配。QMUI 只是将组建资源取值 Attr 化,使⽤何种⽅式,都是由使⽤者⾃⼰决定。
常规使⽤⽅式, 在 Create() ⾥加⼊你的 skin ⽀持项:
QMUISkinManager skinManager = QMUISkinManager.defaultInstance(this);
skinManager.addSkin(1, R.style.app_skin_blue);
skinManager.addSkin(2, R.style.app_skin_dark);
skinManager.addSkin(3, R.style.app_skin_white);
skinManager.changeSkin(isDarkMode ? 2 : 1);
R.style.app_skin_blue、R.style.app_skin_dark、R.style.app_skin_white 等就是不同 skin 下的配置, 然后在
if((newConfig.uiMode & Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_YES){
QDSkinManager.changeSkin(QDSkinManager.SKIN_DARK);
}else CurrentSkin() == QDSkinManager.SKIN_DARK){
QDSkinManager.changeSkin(QDSkinManager.SKIN_BLUE);
}
虎年祝福语2022最火当然,对于启动 LauncherActivity 的背景,是没有机会⾛到 QMUI 的换肤机制的,因此要退化到第⼀种 Dark Mode 的实现⽅案。
那么业务上我们如何对 View 来设置呢? 有以下⽅式:
如果你采⽤的是 xml, 可以通过 QMUI 提供的 qmui_skin_xxx 的设置项来设置你 skin。
如果你想在 java 代码中设置 skin, 那么需要采⽤ QMUISkinValueBuilder 来构建 value, 再通过 QMUI
SkinHelper.setSkinValue 来设置,稍显复杂,如果通过是 kotlin 的话,QMUI 提供了 View.skin ⽅法,可以快速实现。
还有⼀种尚在开发的⽅式, 我把它叫做 skin-maker。 ⽬的是可以让设计师通过点点点的⽅式进⾏ skin 设置,然后导出⼀份配置⽂件,放到⼯程⾥,通过字节码注⼊完成 skin 设置,这样可以将整个配置⼯作交给设计,不⽤每做个新业务都要考虑换肤。 理想是美好的,现实是⽬前做了⼀个 Demo 版,有兴趣的可以在 QMUIDemo 上体验体验,流程是通的,但还有很多问题没解决。
QMUIPopup 重写
QMUIPopup 之前的实现是⽐较糟糕的,采⽤了 .9.png 的⽅式实现了背景阴影,因为阴影是占位置的,所以边缘距离过⼤,如果anchorView 在很边缘的位置,会出现箭头错位或者显⽰不理想的情况,很多⼈踩了这个坑,⽽解约⽅案只能是提供⼀个阴影⼩⼀点的背景图。
因此,这个版本完全重写了它,采⽤了 QMUILayout 的⽅式实现阴影,所以你想完全贴边也是可以的。 除此之外, 2.x 版本提供了QMUIQuickAction 和 QMUIFullScreenPopup , 前者样式来源于读书阅读器的快捷菜单,当然实现不⼀样(虽然读书上的那个也是我写的,但是当年的实现,不忍直视)。 后者可以⽤于实现读书各种想法浮层,去年读书各种浮层兴起,并且还有键盘交互,我算是有⼀些⼼得吧,也提取了出来。
学习分享
如何提高弹跳在当下这个信息共享的时代,很多资源都可以在⽹络上到,只取决于你愿不愿意或是的⽅法对不对了
很多朋友不是没有资料,⼤多都是有⼏⼗上百个G,但是杂乱⽆章,不知道怎么看从哪看起,甚⾄是看后就忘
如果⼤家觉得⾃⼰在⽹上的资料⾮常杂乱、不成体系的话,我也分享⼀套给⼤家,⽐较系统,我平常⾃⼰也会经常研读。
2021最新上万页的⼤⼚⾯试真题
七⼤模块学习资料:如NDK模块开发、Android框架体系架构…
只有系统,有⽅向的学习,才能在段时间内迅速提⾼⾃⼰的技术。
这份体系学习笔记,适应⼈:
**第⼀,**学习知识⽐较碎⽚化,没有合理的学习路线与进阶⽅向。
**第⼆,**开发⼏年,不知道如何进阶更进⼀步,⽐较迷茫。
**第三,**到了合适的年纪,后续不知道该如何发展,转型管理,还是加强技术研究。如果你有需要,
我这⾥恰好有为什么,不来领取!说不定能改变你现在的状态呢!
由于⽂章内容⽐较多,篇幅不允许,部分未展⽰内容以截图⽅式展⽰。
由于⽂章内容⽐较多,篇幅不允许,部分未展⽰内容以截图⽅式展⽰。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论