Android-приложение зависает при использовании рисования на уровне списка - PullRequest
0 голосов
/ 04 марта 2019

Я хочу закрутить изображение в imageview как трехмерное изображение.Поэтому я добавляю 50 изображений в imageview, используя уровень списка drawable.Когда я добавляю 50 изображений в images.xml, приложение вылетает, но если я добавляю 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:Неустранимое исключение: основной процесс: revoh.innovations.smap, PID: 8052 java.lang.OutOfMemoryError: Не удалось выделить 12316512 байтов с 3972568 свободными байтами и 3 МБ до 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.reamesromFaseableRableRable(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 ).flaable на уровне android.graphics.flaable.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:20 .20support.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 )AAppid. (AppCompatImageView.java:78) в android.support.v7.widget.AppCompatImageView. (AppCompatImageView.java:68) в android.support.v7.app.AppCompatViewInflater.createImageView (AppCompatViewInflater.jroid:18supp.ort.ort).v7.app.AppCompatViewInflater.createView (AppCompatViewInflater.java:106) в android.support.v7.app.AppCompatDelegateImpl.createView (AppCompatDelegateImpl.java:1266) в android.support.v7.lp.ategateCatelegateCateLate.1316) в android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:769) в android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:727) в android.view.LayoutInflater.rInflate (LayoutInflater) и LayoutInflater.j.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.innovatiA.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)

1 Ответ

0 голосов
/ 04 марта 2019

За один раз вы загружаете слишком много изображений с высоким разрешением. Документы по обучению Android предлагают масштабировать изображение перед его отображением в пользовательском интерфейсе.В качестве личного предпочтения я полагаюсь на библиотеки, такие как Glide или Picasso , чтобы эффективно показывать изображения в ImageView, потому что будет ли ваш образ соответствовать пределу памяти или нет, в зависимости от устройстваи есть много устройств с большим количеством требований.Эти библиотеки избавят вас от головной боли.

...