Я развиваюсь в Android, и я хочу, чтобы мое приложение масштабировалось от смартфона до полноэкранного телевизора. Я пытаюсь получить размер шрифта моих кнопок, TextViews, ListViews и Canvas для правильного масштабирования. До сих пор я использовал множество пользовательских методов для выполнения задания (вида).Динамическое определение текста в моем приложении
В настоящее время я хватаю пиксели и плотность пикселей от устройства Android во время выполнения и выполняю быстрые вычисления на них, чтобы получить правильный размер шрифта. Это своего рода работа, но это немного отличается от меня. Мне сложно менять шрифт на более сложных объектах, таких как ListViews, которые обмениваются данными через ArrayAdapters. Это лучшее, что у меня есть? Или существует более разумное решение для правильной настройки размера текста приложения между всеми размерами устройств?
Текущее состояние моей программы:
Таблетка:
Разрешение экрана: 1280x800
Плотность пикселей: 1
Рассчитано размер шрифта: 61sp
Appearan в.п.: макет выглядит хорошо
Телефон:
Разрешение экрана: 1920x1080
Плотность пикселей: 3
Рассчитано Размер шрифта: 27sp
Appearance : В основном хорошо. Не совершенным масштаба, так как это не то же самое отношение, как таблетки
Статические методы:
public static Point GetScreenDimensions(Context context){
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Point size = new Point();
display.getSize(size);
return size;
}
public static void SetTextSize(Context context){
TEXT_SIZE_CANVAS = GetScreenDimensions(context).y/15;
TEXT_SIZE_ACTIVITY = (GetScreenDimensions(context).y/13)/(int) GetScaledDensity(context);
}
public static float GetScaledDensity(Context context){
return context.getResources().getDisplayMetrics().density;
}
Применение в активности (метод говорит, что документы устанавливает Int при условии как значение SP):
btnManageTeams.setTextSize(Constants.TEXT_SIZE_ACTIVITY);
Результат: размеры текста, которые в основном устройства агностиком.
Я буду читать эту страницу в ближайшее время. Является ли mdpi, hdpi и xhdpi решаемой по плотности пикселей используемого устройства? – Shadoninja
@Shadoninja Правильно, любое устройство попадет в одну из этих категорий плотности, поэтому вы должны предоставить ресурсы, соответствующие соответствующим образом для каждого – WOUNDEDStevenJones