Как определить файл ресурса в использовании? - PullRequest
1 голос
/ 20 декабря 2011

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

Я установил папки ресурсов с различными квалификаторами локали / разрешения / ориентации, например

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

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

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

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

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

Ответы [ 3 ]

3 голосов
/ 20 декабря 2011

Если вам интересно, для какого файла 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.

0 голосов
/ 20 декабря 2011

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

 ActivityContext.getResources().so on, press ctrl+space in eclipse for help      
 ActivityContext.getWindow().so on, press ctrl+space in eclipse for help
0 голосов
/ 20 декабря 2011

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;
                    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...