- 博客(304)
- 资源 (1)
- 收藏
- 关注
原创 Android 折叠屏问题解决 - 展开后布局未撑开
正常情况下手机展开折叠时页面会销毁重建,但可以通过参数设置禁止销毁重建。但设定完后发现 RecyclerView 中的 item 没有重新按照新的尺寸进行改变,比如折叠时是较窄的,展开后还是窄的。
2024-12-19 11:40:33
260
原创 Android 折叠屏问题解决 - 展开或收起页面重建
Android 折叠屏展开或收起后页面会重建,并重新走 onCreate onStart onResume ...重新创建后页面的状态也会丢失,比如页面中是一个 RecyclerView,我们滑动到了第 5 个卡片的位置,展开后又自动滑动到了第 1 个卡片的位置,这样对用户来说是不友好的。
2024-12-19 11:17:42
289
原创 Android Lottie 体积优化实践:从 6.4 MB 降到 530 KB
图文分离、webp 格式、逻辑共用和动态下发都可以有效降低包体积的占用,大家在开发中可以根据自己的业务场景做相对性的优化处理。
2024-06-04 17:43:22
1438
原创 Android Glide 获取动图的第一帧
Glide 可以加载 2 种动图,一种是 Gif 图,另一种是 Webp 动图。有时候我们需要获取动图的第一帧,并以封面的形式显示,那该怎样获取呢?
2024-04-26 17:41:22
801
原创 解决:鸿蒙提示:SSL peer certificate or SSH remote key was not OK
在鸿蒙虚拟机上运行后,请求接口时提示:SSL peer certificate or SSH remote key was not OK、
2024-03-12 11:53:45
2702
2
原创 解决:Android 报错 Failed to transform exifinterface-1.2.0.jar
Android 报错 Failed to transform exifinterface-1.2.0.jar
2023-12-19 16:30:42
1229
原创 解决:Android TextView 设置斜体后右侧文字被遮挡
遇到一个比较奇怪的情况,给 TextView 文字设置倾斜后,右侧的文字会被遮挡,感觉这应该是 Android 的一个 bug!上效果图:可以明显地看到最右侧的文字被遮挡了。
2023-11-16 15:06:17
1292
原创 解决:Android 设置 Activity 透明和页面开闭时闪烁
我们有的时候需要添加一个透明的 Activity,在上面做一些操作,但往往会有一些问题,要么不能完全透明,要么打开和关闭时存在短暂的闪烁,会影响用户体验。我在网上搜索了一些答案,亲试很发现大多是存在问题的。最后经过一系列尝试后终于实现用户无感知透明了。
2023-08-29 15:31:17
3309
原创 LiveEventBus 原理
LiveEventBus 是一款 Android 消息总线,基于 LiveData,具有生命周期感知能力,支持 Sticky,支持 AndroidX,支持跨进程,支持跨 APP 的通信组件。相较于 EventBus,它支持生命周期感知能力和跨进程通信,是一个非常好用的组件间通信工具。
2023-08-09 14:58:41
1206
原创 解决:记录一次解决排查持久化存储的问题
我们的 App 用 MMKV 持久化存储了 int 型的 key。在 App 启动时会去读取这个 key,但我却找不到存储它的地方。
2023-07-07 17:45:36
376
原创 解决:No toolchains found in the NDK toolchains folder for ABI with prefix: arm-linux-androideabi
Android 编译时报错以下信息:大概意思是 NDK 工具链中缺少 CPU 架构支持:arm-linux-androideabi。看了一下我的 NDK 版本是 25.2.9519653,内部确认没有 arm-linux-androideabi 架构的支持。
2023-04-23 11:43:09
5351
原创 解决:Could not find method ndkVersion() for arguments
解决:Could not find method ndkVersion() for arguments
2023-03-24 16:20:09
1618
原创 解决:Mac Git 每次 clone 都需要输入密码
我们拉取一个项目的时候,往往这个项目会依赖很多子组件,而这些子组件又会分散到不同的 Git 仓库中,如果每次 clone 都需要输入密码的话往往很麻烦,怎样避免这个问题呢?
2023-03-22 18:50:25
765
3
原创 解决:com/android/tools/idea/gradle/run/OutputBuildAction has been compiled by a more recent version
com/android/tools/idea/gradle/run/OutputBuildAction has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
2023-03-21 16:13:09
721
原创 Android 兼容性问题 - 根据字符计算宽度导致 TextView 显示异常
有一些场景,需要根据内容的长短动态设置 TextView 的尺寸。但是在 VIVO Y33S Android 12 机型上发现设置完尺寸直接多出了一些省略号。
2023-03-16 16:23:54
557
原创 Android 布局技巧:前面的文案显示省略号,后面的自适应内容
规则是是不满 1 行的时候自适应宽度,如果放不下的情况下,前面的文案展示省略号,这样是不是不太好实现了呢?动态计算后面文案的宽度,根据剩余的尺寸给前面的 TextView 设置一个最大宽度。借助 LinearLayout 的 weight 属性。但是我们如果想实现下面这种效果,该怎么做呢?这种方案比较麻烦一些。
2023-03-10 16:55:33
183
原创 Android 获取 Fragment 中的 LifecycleRegistry
有时候我们在 Activity 中存在多个 fragment 时,希望在 Fragment 切换时也下发生命周期,这个时候 lifecycle 就不会主动触发了,而我们希望手动处理一些生命周期的时候,发现 Fragment 并未开放lifecyleRegistry 的权限。我们平常在做 Android 开发时,经常需要在 fragment 的子组件中感知其生命周期。fragment 的生命周期通常是需要依赖 Activity 的。可以通过反射获取其 registry。我们怎样才可以打开其访问权限呢?
2023-03-08 14:39:13
293
原创 解决:代码中动态获取尺寸与 AndroidAutoSize 设置的尺寸不一样
AndroidAutoSize 是字节出品的一套自动屏幕适配方案,我们在开发过程中可以很容易的去适配各种屏幕。但应用这套开源库后也存在一个问题:我在 xml 中给 view1 设定尺寸为 200dp,又在代码中动态给view2 设置尺寸为 200dp,但是实际的效果却是不一样长。
2022-12-15 22:57:37
1026
4
原创 Android Library 库直接拿到 Context
我们写底层库的时候经常需要用到 Context,但怎样拿到这个 Context 呢?往下看......
2022-09-21 20:03:13
1342
原创 解决:java.lang.IllegalArgumentException: Unable to create call adapter for class java.lang.Object
Retrofit 请求网络时报错:java.lang.IllegalArgumentException: Unable to create call adapter for class java.lang.Object说没有添加 CallAdapter。
2022-08-26 17:34:38
3229
1
原创 解决:ARouter 报错 There is no route matched
解决:ARouter 报错 There is no route matched
2022-08-26 16:34:56
809
原创 解决:接入 DoKit 时报错:java.lang.NoSuchMethodError: No static method getAppSignatureMD5()
接入 DoKit 时报错:java.lang.NoSuchMethodError: No static method getAppSignatureMD5()
2022-08-23 16:24:57
389
原创 解决:Android debug 系统源码时行号对应不上
一、问题说明我们在开发过程中经常需要去查看系统的源码,可能大多时候只需要阅读一下就行,有时候为了更好的理解,我们需要去 debug 一下,但是会出现 debug 的行号和运行的代码不一致的情况。二、问题原因这是因为很多手机厂商重新定制了系统源码,你电脑上指定版本 SDK 的源码和你自己手机上的并不完全一致。三、解决方案用 Android Studio 的 Device Manager 下载一个同你的 compileSdk 和 targetSdk 版本一致的谷歌虚拟机,将应用运行上去再次
2022-05-20 16:06:45
1372
1
原创 解决:RecyclerView 瀑布流偶现间距太大
一、问题说明正常应该是这样的但有时候打开会变成这样:对比正常图和异常图,明显页面边距和 item 边距都要大不少。比较奇怪的是直接点击上面的 tab 定位到该 fragment 会出问题,如果左右滑动 ViewPager 到该 fragment 就没事。二、解决方案经过一顿排查,终于发现是某些时机下重复设定 ItemDecoration 导致间距直接 double 了。// addItemDecoration 前加上这句判断if (recyclerView.i
2022-05-16 13:49:33
821
原创 解决:Android Lambda 造成内存泄露
一、问题说明class MyActivity : Activity() { override fun onWindowFocusChanged(hasFocus: Boolean) { super.onWindowFocusChanged(hasFocus) if (hasFocus) { // startCheckClipboard 中存在耗时操作 CommandManager.startCheckClipboard { showCo
2022-03-15 09:50:27
3611
2
原创 解决:Paging3 PagingDataAdapter 删除 item
一、问题说明Paging 3 可以很方便的管理数据分页。我们项目中有一个特殊需求:删除指定的 item。但是发现 adapter 并未提供相应的支持。二、解决方案adapter.snapshot().toMutableList().removeAt(position)adapter.notifyItemRemoved(position)搞定!...
2021-10-29 19:00:11
3692
4
原创 解决:CoordinatorLayout 嵌套 RecyclerView 再嵌套 RecyclerView 悬浮联动失效
一、问题说明CoordinatorLayout 嵌套 RecyclerView 滑动联动没问题,但是在 RecylerView 中再嵌套一层 RecyclerView 就会出现不联动的问题。二、问题解决给最内层的 RecyclerView 设置属性:nestedScrollingEnabled <androidx.recyclerview.widget.RecyclerView android:layout_width="match_parent" .
2021-09-18 16:32:05
831
原创 记录:TextView 首行缩进指定宽度
// 第一个参数为第一行缩进宽度,第二个参数为其它行缩进宽度val what = LeadingMarginSpan.Standard(width, 0)val ss = SpannableString("hello world")ss.setSpan(what, 0, ss.length, SpannableString.SPAN_INCLUSIVE_INCLUSIVE)titleView.text = ss...
2021-09-13 15:36:45
878
原创 了解 Android 内存泄露
一、说明看文章之前,可以预想一下,你想从这篇文章中了解什么呢?什么是内存泄露 内存泄露有什么危害 怎样检测内存泄露 怎样解决内存泄露本文主要想说明什么是内存泄露、怎样检测和解决内存泄露。希望大家在看完该文后能对内存泄露有一个全面的了解。二、什么是内存泄露内存泄漏是指程序已经不会再使用的内存对象,由于垃圾回收时无法识别其是否为无用的垃圾对象,不能及时地将其回收,一直保留在内存中占用存储空间,不释放给其他对象。举个例子:茅坑只有那么那么五六个,但有些总喜欢占着茅坑不拉屎,这样就
2021-09-06 16:26:41
926
原创 分享一个 Android 尺寸限制组件:限制最大高度、按宽高比限制宽度或高度
一、说明你是否有遇到过以下需求:底部弹窗的高度为自适应,但最大不能高于 200dp,如果能有一个 maxHeight 属性该多好。但这个属性貌似只在 TextView 有发现,其它 View 就不支持了。 图片的宽度为屏幕宽度,图片的高度为按设计图尺寸自适应。 或者图片的高度固定,按一定比例自适应宽度。以上的这些需求,Android 原生没有直接的属性支持。当然,你也可以每次去计算,但这样太费事了,如果能封装一个组件达到一劳永逸是不是会方便很多呢。二、实现逻辑1、在style.xml.
2021-08-05 20:12:48
2544
原创 解决:Type com.alibaba.android.arouter.routes.ARouter$$Group$$home is defined multiple times
一、问题场景项目中有用到阿里的 ARouter 组件,定义路由的时候添加了一个 scheme://home/categories,结果一直报该错误:Type com.alibaba.android.arouter.routes.ARouter$$Group$$home is defined multiple times项目中之前也有用到过scheme://home/mine 这样的路由是没有问题的。比较奇怪的是为什么这个就会有问题呢?二、问题解决换成scheme://home2/..
2021-08-04 11:43:21
7186
原创 解决:Failure [INSTALL_FAILED_TEST_ONLY]
一、问题场景我用 Android Studio 在 VIVO Y85A 手机上调试应用时,一直提示安装失败:failed to install build/outputs/apk/debug/debug.apk: Failure [INSTALL_FAILED_TEST_ONLY]二、解决方案在 gradle.properties 中添加:android.injected.testOnly=false搞定!...
2021-07-28 13:54:35
328
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人