我想将imageview
中的图像旋转为3d图像。因此,我使用列表级别imageview
在drawable
中添加了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 / Android运行时:致命异常:主要 流程: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)
答案 0 :(得分:0)
您一次加载太多高分辨率图像。 Android Training docs建议您先缩放图像,然后再将其显示在UI上。根据个人喜好,我依靠Glide或Picasso之类的库来有效显示//Creating Test Data
val df = Seq("[2019-01-10T23:59:59.998-06:00] [xx_yyy_zz_sss_ra10] [ERROR] [OSB-473003] [oracle.osb.statistics.statistics] [tid: [ACTIVE].ExecuteThread: '28' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: <anonymous>] [ecid: 92b39a8b-8234-4d19-9ac7-4908dc79c5ed-0000bd0b,0] [partition-name: DOMAIN] [tenant-name: GLOBAL] Aggregation Server Not Available. Failed to get remote aggregator[[")
.toDF("_raw")
val splitDF = df.withColumn("split_raw_arr", split($"_raw", " "))
.withColumn("A", $"split_raw_arr"(0))
.withColumn("B", $"split_raw_arr"(1))
.withColumn("C", $"split_raw_arr"(2))
.withColumn("D", $"split_raw_arr"(3))
.withColumn("E", $"split_raw_arr"(4))
.drop("_raw", "split_raw_arr")
splitDF.show(false)
+-------------------------------+--------------------+-------+------------+----------------------------------+
|A |B |C |D |E |
+-------------------------------+--------------------+-------+------------+----------------------------------+
|[2019-01-10T23:59:59.998-06:00]|[xx_yyy_zz_sss_ra10]|[ERROR]|[OSB-473003]|[oracle.osb.statistics.statistics]|
+-------------------------------+--------------------+-------+------------+----------------------------------+
val extractedDF = df
.withColumn("a", regexp_extract($"_raw", "\\[(.*?)\\]",1))
.withColumn("b", regexp_extract($"_raw", "\\[(.*?)\\] \\[(.*?)\\]",2))
.withColumn("c", regexp_extract($"_raw", "\\[(.*?)\\] \\[(.*?)\\] \\[(.*?)\\]",3))
.withColumn("d", regexp_extract($"_raw", "\\[(.*?)\\] \\[(.*?)\\] \\[(.*?)\\] \\[(.*?)\\]",4))
.withColumn("e", regexp_extract($"_raw", "\\[(.*?)\\] \\[(.*?)\\] \\[(.*?)\\] \\[(.*?)\\] \\[(.*?)\\]",5))
.withColumn("f", regexp_extract($"_raw", "(?<=ecid: )(.*?)(?=,)",1))
.drop("_raw")
+-----------------------------+------------------+-----+----------+--------------------------------+---------------------------------------------+
|a |b |c |d |e |f |
+-----------------------------+------------------+-----+----------+--------------------------------+---------------------------------------------+
|2019-01-10T23:59:59.998-06:00|xx_yyy_zz_sss_ra10|ERROR|OSB-473003|oracle.osb.statistics.statistics|92b39a8b-8234-4d19-9ac7-4908dc79c5ed-0000bd0b|
+-----------------------------+------------------+-----+----------+--------------------------------+---------------------------------------------+
中的图像,因为您的图像是否会达到内存限制取决于设备本身。有很多要求很多的设备。这些库使您免于头痛。