为了账号安全,请及时绑定邮箱和手机立即绑定

从 mipmap 到 drawable

从 mipmap 到 drawable

RISEBY 2021-06-19 19:53:52
我曾经在 mipmap 文件夹中有我的应用程序的图像,但我没有不同的分辨率(我在所有 5 个文件夹中都有完全相同的图像)。为了节省空间,我将这些图像移到了 drawable 文件夹中(除了作为唯一具有不同分辨率的图像的启动器图标)。但是当我打开一个包含其中一些图像的活动时,我收到以下崩溃错误:java.lang.OutOfMemoryError: Failed to allocate a 29304012 byte allocation with 16777216 free bytes and 23MB until OOMat dalvik.system.VMRuntime.newNonMovableArray(Native Method)at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)at android.graphics.BitmapFactory.decodeStream(BitmapFac tory.java:624)at  android.graphics.BitmapFactory.decodeResourceStream(Bi tmapFactory.java:457)at android.graphics.drawable.Drawable.createFromResource Stream(Drawable.java:1152)at android.content.res.ResourcesImpl.createFromResourceSt ream(ResourcesImpl.java:1272)at android.content.res.ResourcesImpl.loadDrawableForCooki e(ResourcesImpl.java:743)at android.content.res.ResourcesImpl.loadDrawable(Resourc esImpl.java:585)at android.content.res.MiuiResourcesImpl.loadDrawable(Miui  ResourcesImpl.java:308)at android.content.res.Resources.loadDrawable(Resources.ja  va:872)at android.content.res.TypedArray.getDrawable(TypedArray.ja va:930)at android.view.View.<init>(View.java:4182)at android.widget.TextView.<init>(TextView.java:710)at android.widget.Button.<init>(Button.java:109)at android.widget.Button.<init>(Button.java:105)at android.support.v7.widget.AppCompatButton.<init>. (AppCompatButton.java:70)at android.support.v7.widget.AppCompatButton.<init>. (AppCompatButton.java:66)at android.support.v7.app.AppCompatViewInflater.createButt on(AppCompatViewInflater.java:186)at android.support.v7.app.AppCompatViewInflater.createVie w(AppCompatViewInflater.java:109)at android.support.v7.app.AppCompatDelegateImplV9.create View(AppCompatDelegateImplV9.java:1035)at android.support.v7.app.AppCompatDelegateImplV9.onCre ateView(AppCompatDelegateImplV9.java:1092)at android.view.LayoutInflater.createViewFromTag(LayoutInfl ater.java:794)at 
查看完整描述

3 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

我以前遇到过这个问题,这是因为我的可绘制文件夹中有一个非常大的图像要加载(内存不足)。

我所做的是将我所有的可绘制对象拖到该站点以生成 Android 资产并将它们返回到具有新尺寸(以及分辨率以及 hdpi 等)的可绘制对象中。


查看完整回答
反对 回复 2021-06-30
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

这意味着你的内存不足。为了节省空间,您可以做的是将图像移回 mipmap 文件夹,但您只需要在其中之一中使用它。你不需要把它放在所有五个中。这不是最佳实践,但它会起作用。


查看完整回答
反对 回复 2021-06-30
?
UYOU

TA贡献1878条经验 获得超4个赞

使用此链接创建适当分辨率的图像(hdp、xdp、xxdp),然后将这些图像放在相关的可绘制资源目录中

https://romannurik.github.io/AndroidAssetStudio/


查看完整回答
反对 回复 2021-06-30
  • 3 回答
  • 0 关注
  • 473 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信