2015-02-05 2 views
9

У меня есть в каталоге для рисования файл с размером 960x1440. Когда запуск приложения, изображение не загружается в фоновом режиме и в LogCat я вижу:Растровое изображение слишком велико, чтобы быть загруженным в текстуру

Bitmap слишком большой, чтобы быть загружено в текстуру (2880x4320, макс = 4096x4096)

Почему он говорит 2880x4320 если изображение 960x1440?

Битовая карта загружается с помощью XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 

    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/launcher_bg" 
    android:orientation="vertical" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin"> 
+0

Просьба привести пример кода, в котором вы загружаете текстуру. –

+0

Вы проверили все свои доступные папки, если в них нет большого файла? Ваше приложение работает без фонового изображения? Что это за файл изображения, png, jpg? –

+0

У меня есть только 1 файл для всех разрешений (с возможностью рисования) размером 1.02 мб и размером 960x1440 ... да, приложение работает без изображения bg ... но не на всех устройствах, только на Nexus 5 на данный момент – andreasperelli

ответ

44

изображение в папке /drawable/ без какой-либо спецификации считается «по умолчанию», то есть для 1DP = 1px, который mpdi, то из-за устройства вы на самом деле работаете xxhdpi, что изображение будет увеличено во время выполнения.

Исходное изображение может быть 960x1440, но преобразование из mdpi в xxhdpi 3 раза больше, поэтому ваш 960x1440 становится (3 * 960) х (3 * 1440) = 2880x4320, который является слишком большой текстуры для применяются к аппаратным ускоренным представлениям.

так, чтобы исправить это на самом деле довольно просто, у вас есть два варианта:

  1. перемещать изображение в /drawable-nodpi/, что просто, уменьшает размер .apk, но нижний конец устройство может бороться, чтобы загрузить такое большое изображение ,
  2. создавать масштабированные изображения на всех плотностях mdpi, hdpi, xhdpi, xxhdpi, чтобы избежать чрезмерного масштабирования и иметь меньшие изображения на старых устройствах.
+0

на самом деле нет 2. сейчас довольно просто, благодаря плагину Android Drawable Importer – Antek

Смежные вопросы