2013-05-28 3 views
6

У меня очень простой вопрос:Как получить квалификаторы для данного ресурса (при его использовании)?

Учитывая определенный ресурс (id, string, drawable, ...) из файла R.java, можно ли узнать, какие его определители в его папке совпадали? Если да, то как?

Например, если у моего устройства есть экран с плотностью hdpi, и у меня есть одно и то же имя файла «x.png» на «res/drawable-hdpi» и «res/drawable-mdpi», и я об этом чтобы декодировать этот файл, то, что я хотел бы получить, заключается в том, что он получил файл из res/drawable-hdpi, и, зная, что он имеет плотность hdpi.

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

То же самое относится к остальным квалификаторам (locale, screenSize, ...).

+0

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

+0

@ GmloMalo Нет. Я даже не помню, зачем мне это нужно ... –

+0

Хорошо. Спасибо в любом случае – GmloMalo

ответ

0

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

Надеюсь, это поможет.

+0

Пример кода не имеет кода и никакой функции, которая делает то, что я написал о ... –

+0

просто запустите образец кода, и вы поймете. – bladeX

0

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

Но вы всегда можете сформулировать правила на основе правил, указанных в документации для квалификаторов ресурсов для Android.

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

Что касается определения того, какой ресурс используется, вы можете легко сформулировать логику, основанную на плотности экрана, размере экрана, текущем локали телефона и текущей ориентации, все из которых доступны через различные apis, присутствующие в android.

+0

Предположим, что код ничего не знает о том, какие файлы ресурсов существуют, я хочу, чтобы у него была функция, которая будет определять, какие квалификаторы используются для данного ресурса. это для среды выполнения (потому что в противном случае я могу видеть, где находятся файлы ...). –

+0

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

0

использование http://developer.android.com/reference/android/content/res/Configuration.html

пример для точек на дюйм:

Configuration config = getResources().getConfiguration(); 
    Log.d("DPI ", Integer.toString(config.densityDpi)); 
+0

Где часть, которую я даю вам идентификатор ресурса? В настоящее время все, что я вижу, это то, что вы определили плотность устройства.Это не имеет никакого отношения к данному ресурсу. –

+0

это, и можно просматривать dpi в цифрах. http://stackoverflow.com/questions/2025282/difference-between-px-dp-dip-and-sp-in-android check dpi с настройкой и известным веществом плотности для вашего телефона. – Novikov

+0

Вы не понимаете вопроса. Я не прошу плотности. Я спрашиваю, как получить исходную папку ресурса, который я выбираю. Например, если у меня есть возможность рисования внутри нескольких папок («drawable-ldpi», «drawable-port», «drawable-iw», ...), я хочу найти, какой из файлов он выбрал, когда я пытаюсь получить Это. –

Смежные вопросы