Уменьшаемое рисование не работает для активов, объявленных в другом модуле - PullRequest
0 голосов
/ 07 февраля 2019

Обмен знаниями, стиль вопросов и ответов

Рассмотрим архитектуру приложения с универсальным модулем библиотеки и несколькими модулями приложения, которые конфигурируют модуль библиотеки.Модуль библиотеки ссылается на ресурсы, предоставляемые модулями приложения.Это включает оптимизацию для конкретной цели: поставляйте только приложение с ресурсами, которые используются этим вариантом приложения.

Чтобы сослаться на ресурсы в модуле библиотеки, используйте ресурсы значений для введения идентификаторов:

<resources>
  <item name="foo" type="drawable"/>
</resources>

Затем предоставление ресурса в модулях приложения:

app1/src/main/res/drawable-xhdpi/foo.png # variant for app1
app2/src/main/res/drawable-xhdpi/foo.png # variant for app2
# app3 configuration does not use drawable/foo, no need to provide

Ресурсы не предоставляются для каждого сегмента плотности, вместо этого полагаясь на систему , выбирающую ближайшее совпадение и увеличивающую или уменьшающую по мере необходимости сдостаточно хороших результатов.

Теперь, когда, например, приложение app1 запущено на устройстве с плотностью mdpi, таком как планшет, получается

android.content.res.Resources$NotFoundException:
Drawable app1.package.name:drawable/foo with resource ID #0x7f123456

Эта загрузка ресурсов с ближайшим соответствием работает нормально, если активы .pngвключен в библиотечный модуль напрямую.Не хочу включать в него все графические ресурсы, так как это приведет к ненужному переполнению приложения.

Эта загрузка ресурсов с ближайшим соответствием работает нормально при увеличении, например, xhdpi -> xxhdpi.Только уменьшение масштаба как xhdpi -> mdpi вызывает проблемы.

1 Ответ

0 голосов
/ 07 февраля 2019

Решена проблема сбоя путем перемещения ресурсов .png в drawable-mdpi.

...