Canvas: trying to draw too large(256032000bytes) bitmap.

1、错误展示

测试了一下一张图片的显示,发现二个手机上测试的结果不一样,配制好一些的手机,直接就通过,但是屏小一些的测试手机上,直接报下面的错误。

这个意思是图片太大了,直接就崩了。

2、代码编写

复制代码
 logoPainter?.let { painter ->
                Image(
                    painter = painterResource(R.drawable.bg),
                    contentDescription = stringResource(R.string.app_name),
                    contentScale = ContentScale.FillHeight,
                    modifier = Modifier
                        .fillMaxWidth()
                        .align(Alignment.TopCenter)
                        .height(200.dp)
                )
            } ?: run {
                ... 
            }

上面就是加载一张图片,别的并没有任何功能。

3、分析原因

然后bg是一张图片,大概3000*2000多一张的图片。

导致上面的问题,应该图片太大了(分辨率),不是图片太大了(占用空间)。

4、解决方法

复制代码
 logoPainter?.let { painter ->
                Image(
                    painter = painterResource(R.mipmap.bg),
                    contentDescription = stringResource(R.string.app_name),
                    contentScale = ContentScale.FillHeight,
                    modifier = Modifier
                        .fillMaxWidth()
                        .align(Alignment.TopCenter)
                        .height(200.dp)
                )
            } ?: run {
                ... 
            }

说明:将一开始的代码R.drawable改为R.mipmap,然后分别修改对应的bg.jpg的分辨率大小,这样再次加载,就会发现已经成功了,当然这里的大小也不能太大,一般保持在几K到几百K吧。

相关推荐
你过来啊你3 小时前
Android用户鉴权实现方案深度分析
android·鉴权
kerli5 小时前
Android 嵌套滑动设计思想
android·客户端
恣艺6 小时前
LeetCode 854:相似度为 K 的字符串
android·算法·leetcode
阿华的代码王国6 小时前
【Android】相对布局应用-登录界面
android·xml·java
用户207038619497 小时前
StateFlow与SharedFlow如何取舍?
android
QmDeve7 小时前
原生Android Java调用系统指纹识别方法
android
淹没7 小时前
🚀 告别复杂的HTTP模拟!HttpHook让Dart应用测试变得超简单
android·flutter·dart
HX4368 小时前
MP - List (not just list)
android·ios·全栈