【发布时间】:2023-03-18 15:01:01
【问题描述】:
我想将imageview 中的图像旋转为 3d 图像。所以我通过使用列表级别drawable 在imageview 中添加50 个图像。当我在images.xml 中添加 50 张图片时,应用程序崩溃,但如果我添加 12 张图片,它就可以完美运行。我不知道为什么会发生这个错误。我还没有找到任何解决方案。帮助我摆脱这个问题。
images.xml
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:maxLevel="0" android:drawable="@drawable/one"/>
<item android:maxLevel="1" android:drawable="@drawable/two"/>
.
.
.
<item android:maxLevel="50" android:drawable="@drawable/fifty"/>
</level-list>
activity.xml
<ImageView
android:layout_width="match_parent"
android:layout_height="170dp"
android:layout_centerVertical="true"
android:layout_above="@+id/mid"
android:paddingTop="40dp"
android:id="@+id/car_icon"
app:srcCompat="@drawable/images"
/>
Activity.java
imageView = findViewById(R.id.car_icon);
imageView.setImageLevel(x);
"x varies depends on onTouchEvent from (0 to 50)"
错误日志
2019-03-04 11:02:39.207 8052-8052/revoh.innovations.smap E/AndroidRuntime: 致命异常: main 进程:revoh.innovations.smap,PID:8052 java.lang.OutOfMemoryError:无法分配 12316512 字节分配,3972568 可用字节和 3MB 直到 OOM 在 dalvik.system.VMRuntime.newNonMovableArray(本机方法) 在 android.graphics.BitmapFactory.nativeDecodeAsset(本机方法) 在 android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:620) 在 android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:455) 在 android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1155) 在 android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:720) 在 android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:571) 在 android.content.res.Resources.getDrawable(Resources.java:771) 在 android.graphics.drawable.LevelListDrawable.inflateChildElements(LevelListDrawable.java:134) 在 android.graphics.drawable.LevelListDrawable.inflate(LevelListDrawable.java:93) 在 android.graphics.drawable.DrawableInflater.inflateFromXml(DrawableInflater.java:130) 在 android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1227) 在 android.graphics.drawable.Drawable.createFromXml(Drawable.java:1200) 在 android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:715) 在 android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:571) 在 android.content.res.Resources.getDrawable(Resources.java:771) 在 android.content.Context.getDrawable(Context.java:525) 在 android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:463) 在 android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:203) 在 android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:191) 在 android.support.v7.content.res.AppCompatResources.getDrawable(AppCompatResources.java:102) 在 android.support.v7.widget.AppCompatImageHelper.loadFromAttributes(AppCompatImageHelper.java:59) 在 android.support.v7.widget.AppCompatImageView.(AppCompatImageView.java:78) 在 android.support.v7.widget.AppCompatImageView.(AppCompatImageView.java:68) 在 android.support.v7.app.AppCompatViewInflater.createImageView(AppCompatViewInflater.java:182) 在 android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:106) 在 android.support.v7.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1266) 在 android.support.v7.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1316) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:769) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:858) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:518) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:426) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:377) 在 android.support.v7.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469) 在 android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 在 revoh.innovations.smap.MainActivity.onCreate(MainActivity.java:32) 在 android.app.Activity.performCreate(Activity.java:6679) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) 在 android.app.ActivityThread.-wrap12(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6119) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 2019-03-04 11:02:39.207 8052-8052/revoh.innovations.smap E/AndroidRuntime: 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
【问题讨论】:
-
错误在哪里?添加问题。
-
@Bala,显示崩溃日志
-
好的,我添加我的崩溃日志
-
加载 50 张图像需要太多内存,因此会崩溃...尝试减小图像大小,或者加载更少的图像。
-
谢谢@Rakesh Kumar 我通过减少负载大小解决了这个问题。