Как определить используемый файл ресурсов?

Имейте несколько ресурсов файлов изображений, например. image01.png, image02.png....

У меня есть папки ресурсов с разными языками/разрешениями/ориентациями, например.

/res/drawable-en-mdpi-port
/res/drawable-en-mdpi-land
/res/drawable-fr-hdpi-port...........

Файлы изображений в каждом из них отличаются (соотношение сторон/разрешение/локаль-specfic-изображение)

В любом случае, чтобы программно определить, какой фактический файл ресурсов используется в приложении? Было бы полезно для тестирования, чтобы отправить его на журнал отладки, поэтому можете быть уверены, что правильный файл изображения используется, т.е. Я правильно определил квалификаторы ресурсов и разместил правильные изображения в правильных папках.

Можно сделать это вручную, но по мере увеличения количества изображений это становится основной задачей.

Я угадываю из подобных вопросов об определении путей ресурсов, что это может быть невозможно. Если нет, у кого-нибудь есть трюки/подсказки? Я мог бы добавить текст ID к изображению (возможно, даже использовать script для пакетного изображения водяных знаков с именем файла), но был бы рад услышать, если есть более простой способ.

Ответ 1

Если вам интересно, какой файл PNG, который сейчас (с текущей конфигурацией) загружен, скажем R.drawable.icon, вы можете сделать это:

TypedValue returnedValue = new TypedValue();
getResources().openRawResource(R.drawable.icon, returnedValue);
Log.d("Example", "Path to loaded resource: " + returnedValue.string);

на устройстве hdpi, выход будет:

D/Example ( 2028): Path to loaded resource: res/drawable-hdpi/icon.png

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

Ответ 2

U может сделать это с помощью этого, но он работает только в том случае, если u следует правилам именования папок для android

 switch (getResources().getDisplayMetrics().densityDpi) {
                    case DisplayMetrics.DENSITY_LOW:
                        //Ldpi
                        break;
                    case DisplayMetrics.DENSITY_MEDIUM:
                        //Mdpi
                        break;
                    case DisplayMetrics.DENSITY_HIGH:
                        //Hdpi
                        break;
                    case DisplayMetrics.DENSITY_XHIGH:
                        //x-hdpi
                        break;
                    }

Ответ 3

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

 ActivityContext.getResources().so on, press ctrl+space in eclipse for help      
 ActivityContext.getWindow().so on, press ctrl+space in eclipse for help