在Android的何处存储图像

问题描述 投票:0回答:1

我已将所有图像从文件夹mipmap移到了drawable,因为这里说的mipmap文件夹仅用于应用程序图标来启动应用程序Mipmaps vs. drawable folders(答案得到841个赞)。但是,当我现在要启动我的应用程序时,会出现错误消息

 FATAL EXCEPTION: main
    Process: com.example.td.barapp, PID: 4331
    java.lang.RuntimeException: Canvas: trying to draw too large(188394348bytes) bitmap.
        at android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:260)

人们回答了几个实际问题,将图片存储在不同的可绘制文件夹(请参阅Android : Understanding drawable folder)中,例如drawable-xxhdpi或drawable-xxxhdpi。

更新:此帖子中的某人告诉我(后来他删除了他的答案),我将图像(大小为1.7 MB)存储在drawable-anydpi文件夹中。我照他说的做了,但是对于imageview来说,在Emulator上的结果看起来很糟糕(请参见屏幕截图):Comparison of the emulator output of the same file然后,我将同一文件移回文件夹mipmap-xxxhdpi,现在看起来又不错了。所以我现在的问题是,将图像放在mipmap-xxxhdpi文件夹而不是可绘制文件夹中还可以吗?我会为每一个建议感到高兴,因为我现在很困惑。

android android-drawable mipmaps
1个回答
0
投票
java.lang.RuntimeException:画布:也试图绘制大(188394348bytes)位图

此异常主要是因为您试图显示一个具有高分辨率的188MB大图像,而android对此施加了限制,这也报告了here

原因之一是节省设备资源;例如,您可能会得到java.lang.OutOfMemory,因此系统会从中保存设备内存。

[123可能会彻底指导您。

通常,您可以在应用程序中使用几兆字节的图像〜0-3MB。GlidePicasso之类的第三方库在显示ImageViews上的图像时提供磁盘,网络和内存管理技术。

您可能考虑的一种选择是在加载图像之前调整图像大小,因此可以看看this问题。

请记住,Android在应用商店上的apk文件中设置了限制,因此您需要基于此原因最小化图像,或从后端服务器加载它们。

如上所述,您只能将应用程序图标放在res \ mipmap中。而且,如果您决定将图像放置在应用程序上,则可以以不同的密度(hdpi,xhdpi,xxhdpi,xxxhdpi ...)创建图像,这样它们可以匹配所有不同的设备分辨率,并避免图像失真或通过Android OS进行高度处理,以在显示图像之前将图像与设备分辨率匹配。

© www.soinside.com 2019 - 2024. All rights reserved.