Почему некоторые мобильные телефоны xhdpi не отображают изображения, расположенные только в / res / drawable?

Это сценарий. Есть папки:

  • рисуем
  • рисуем-ldpi
  • рисуем-MDPI
  • рисуем-ИПЧР
  • draawble-xhdpi

Изображение (обычно фоном, но не привязанным к таким изображениям) расположено только в /res/drawable .

Я тестирую приложение на Galaxy S3, и фон отображается правильно. Я тестирую HTC One X, и фоновое изображение не отображается.

Если я /res/drawable-xhdpi изображение из /res/drawable в /res/drawable-xhdpi , в One X будет отображаться изображение.

Мышление логически, это не должно происходить , правильно ?! Если в drawable-xhdpi нет изображения, то Android должен искать его в других папках, пока он не достигнет значения по умолчанию /res/drawable и он должен вытащить его оттуда.

Почему это не происходит на некоторых мобильных телефонах?

PS. Я заметил ту же проблему с некоторыми таблетками, но теперь я не могу вспомнить, какие из них.

PPS. Я упомянул здесь фоновое изображение, но проблема не связана с ним. Это также происходит с другими изображениями. Я знаю, что мобильные телефоны xhdpi имеют проблемы с большими изображениями, и мне не хотелось бы, чтобы вы думали, что проблема связана со слишком большим фоном. Это также происходит с другими изображениями «нормального» размера.

Solutions Collecting From Web of "Почему некоторые мобильные телефоны xhdpi не отображают изображения, расположенные только в / res / drawable?"

Почему вы хотите поместить файл изображения в папку с возможностью переноса?

В соответствии с советами, которые я прочитал через Интернет, вы не должны помещать файлы изображений в папку с возможностью переноса.

В выпадающей папке вы помещаете только рисунки типа xml.

Если вы хотите поместить файл изображения, поместите его в любую из следующих папок (или добавьте для них дополнительный квалификатор или используйте другие квалификаторы):

  • Drawable-nodpi (только для изображений, которые вы не знаете, что должно быть их размера)
  • рисуем-ldpi
  • рисуем-MDPI
  • рисуем-ИПЧР
  • рисуем-xhdpi
  • рисуем-tvdpi

Изображения, помещенные в выпадающую папку, рассматриваются как значение по умолчанию, которое равно mdpi. Поэтому, если вы хотите сохранить файл в той же категории плотности экрана, поместите его в папку drawable-mdpi.

Еще одна причина не помещать изображение в папку с возможностью переноса, так это то, что андроид автоматически преобразует файл в 16-битное изображение для некоторых устройств (например, галактики samsung s), что в некоторых случаях будет выглядеть ужасно.

Вот ссылка, которая объясняет эту проблему .

Я сделал проект с возможностью рисования, который находится только в папке «res / drawable», протестировал его на моем One X и подтвердил, что изображение отображается:
https://github.com/lnanek/Misc/tree/master/TestOneXDrawableFolder

Планировка:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <ImageView android:src="@drawable/drawableonly" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" /> </RelativeLayout> 

Ресурсы:

 res res/drawable res/drawable/drawableonly.png res/drawable-hdpi res/drawable-hdpi/ic_launcher.png res/drawable-ldpi res/drawable-mdpi res/drawable-mdpi/ic_launcher.png res/drawable-xhdpi res/drawable-xhdpi/ic_launcher.png res/layout res/layout/activity_main.xml res/menu res/menu/activity_main.xml res/values res/values/strings.xml res/values/styles.xml res/values-v11 res/values-v11/styles.xml res/values-v14 res/values-v14/styles.xml 

Вы можете попытаться выяснить, что вы делаете, что может вызвать другое поведение. Имейте в виду, что наличие «выталкиваемой» папки и папки « drawable-mdpi » немного странно, потому что по умолчанию mdpi папка имеет плотность mdpi . Не может быть детерминированным, какой из этих двух будет использоваться. Я знаю, что использование спецификатора плотности автоматически добавляет -v4 в современные средства сборки, чтобы исправить проблемы с Android 1.5, не понимая этих спецификаторов и правильно их обрабатывая, поэтому drawable-mdpi-v4 может считаться более спецификацией и совпадением в сравнении с вытяжка. Тем не менее, обе папки имеют mdpi плотности mdpi , поэтому имейте в виду, что ваши выталкиваемые из любой папки будут автоматически масштабироваться при использовании оттуда.