Вытянуть нужный dimension
Добавлено: 26 фев 2013, 00:16
Добрый вечер/ночь/утро/день
Вот такая вот проблемка. Есть ресурсник:
Если вытаскивать ресурсник как
то вернётся 15.0 так как он налету конвертирует все значение в пиксели, мне же нужны эти значения в том виде как они лежат (то есть что бы возвращалось 10, а величину я потом сам подставлю). Гугл и стек ничего толкового не дали, та и не долго я искал, но наткнулся на одну идею доставать их как стринги, а потом уже парсить. Конечно небольшой велосипед, но не такой уж громадный что бы поднимать панику. Собственно вот:
Но вопрос мой состоит в следующем: неужели так глупо и не предусмотрено вытянуть значения в изначальном виде (тогда зачем их хранить там)? Я понимаю что обязательно где то что то должно быть, но даже такой подход всё равно не помогает: так как он вытаскивает уже в пикселях и в итоге всё равно получается в sp не та цифра.
Вот такая вот проблемка. Есть ресурсник:
Код: Выделить всё
<dimen name="dp">10dp</dimen>
<dimen name="sp">10sp</dimen>Код: Выделить всё
getResources().getDimension(R.dimen.dp);
getResources().getDimension(R.dimen.sp);Код: Выделить всё
private static final String PATTERN_REGEXP = "[0-9]*\\.?[0-9]";
public static float getDimen(Resources resources, int resName)
{
float value = 0;
String sName = null;
try {
sName = resources.getString(resName);
Pattern pattern = Pattern.compile(PATTERN_REGEXP);
Matcher matcher = pattern.matcher(sName);
if (matcher.find()) {
value = Float.valueOf(matcher.group());
}
} catch (NumberFormatException e) {
} catch (NotFoundException e) {
} catch (PatternSyntaxException e) {
} catch (NullPointerException e) {
}
return value;
}Код: Выделить всё
TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, getResources().getDimension(R.dimen.sp), getResources().getDisplayMetrics())