У меня есть приложение для Android, которое использует оба чертежа из собственной папки ресурсов и из папки ресурсов пакета, связанного через общий идентификатор пользователя.
Я столкнулся с уменьшением плотности пикселей drawables (что приводит к артефактам интерполяции) только из собственных ресурсов ** каждый раз, когда приложение запускается, а связанные с ним *** выглядят нормально.
Выполнение приложения примерно в 10-й раз приводит к сбою *. Затем загрузка в первый раз отображает все изображения в исходной плотности.
Приложение основано на SDK версии 1.6 и не имеет конкретных ресурсов, зависящих от плотности, что означает строго разработанное для 320 x 480 пикселей. Проблема не возникает ни на устройстве с соответствием размера экрана, как указано выше, ни в эмуляторе с одинаковым и большим размером экрана. В последнем случае изображения правильно масштабируются для соответствия.
Я не знаю, где (в коде), чтобы начать искать причины этой ошибки.
Заранее благодарим за любые подсказки!
EDIT:
Следует также упомянуть, что несколько Dialogs (например, ProgressDialog
) рисуются вдвое меньше, чем раньше, при перезагрузке приложения.
ERROR/AndroidRuntime(23632): FATAL EXCEPTION: main
ERROR/AndroidRuntime(23632): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp/com.myapp.Paketliste}: android.view.InflateException: Binary XML file line #20: Error inflating class <unknown>
ERROR/AndroidRuntime(23632): Caused by: android.view.InflateException: Binary XML file line #20: Error inflating class <unknown>
ERROR/AndroidRuntime(23632): Caused by: java.lang.reflect.InvocationTargetException
ERROR/AndroidRuntime(23632): Caused by: android.content.res.Resources$NotFoundException: File res/drawable/buttons.png from drawable resource ID #0x7f020016
ERROR/AndroidRuntime(23632): Caused by: java.lang.IllegalArgumentException: width and height must be > 0
WARN/ActivityManager(2461): Force finishing activity com.myapp/.Paketliste
ImageView imageView_IconOfAnotherPackage = (ImageView) row
.findViewById(R.id.paketliste_installed);
imageView_IconOfAnotherPackage
.setImageResource(R.drawable.default_icon);
imageView_IconOfAnotherPackage
.setImageDrawable(this
.getPackageManager()
.getResourcesForApplication('com.myotherapp')
.getDrawable(0x7f020001)
);
Я нашел сообщение, где парень предположительно имел ту же проблему (и нашел решение) здесь:
http://adrianvintu.com/blogengine/post/Force-Locale-on-Android.aspx
(через этот ответ: Настройка языка приложения в Android-настройках)