Как определить используемый файл ресурсов?
Имейте несколько ресурсов файлов изображений, например. 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