#android
#Android
Вопрос:
Я не могу понять, почему я могу указывать ресурсы в зависимости от dpi, размера экрана, ориентации и т.д., Но не от разрешения.
Например, я загружаю эскизы статей из Интернета; они всегда имеют ширину 300 пикселей. Если экран имеет ширину не менее 600 пикселей, я бы хотел показать их слева от текста, а если экран имеет ширину менее 600 пикселей, я бы хотел нарисовать их над текстом.
Как я могу полагаться на единицы физического размера, такие как dp / in / mm, если я не знаю физического размера самого экрана?
Почему Android не позволяет мне это делать? Каков предпочтительный способ обработки таких ситуаций?
Комментарии:
1. Вы не можете управлять этим в XML? Если вы установите минимальную ширину текстовой области равной 300, то она должна сама разобраться.
2. Я хочу отображать изображение в разных частях макета, а не просто изменять его размер.
Ответ №1:
Я не могу понять, почему я могу указывать ресурсы в зависимости от dpi, размера экрана, ориентации и т.д., Но не от разрешения.
Потому что это, как правило, не очень хорошая идея.
Как я могу полагаться на единицы физического размера, такие как dp / in / mm, если я не знаю физического размера самого экрана?
На уровне набора ресурсов физический размер определяется через -small
, -normal
, -large
и -xlarge
. Так, например, вы могли бы нарисовать свой значок слева для -large
и -xlarge
и нарисовать свой значок сверху для -small
и -normal
.
Каков предпочтительный способ обработки таких ситуаций?
Предпочтительный способ — создавать варианты дизайна на основе размера экрана и плотности.
При этом вы можете делать все, что захотите, с помощью своего собственного Java-кода. Ресурсы макета и наборы ресурсов — рекомендуемое удобство, не более того.
Комментарии:
1. Не могли бы вы уточнить размеры экрана? В документах очень неясно, что означает размер. В нем говорится, например, что
small
означает «размер макета» … примерно 320x426dp». Что это значит? Будет ли экран 360x360dpsmall
? Как насчет 240x500dp? В моем случае меня особенно интересует ширина экрана.2. @Shoooshpanchick: developer.android.com/guide/practices/screens_support.html Решение совершенно бессмысленно, и чем скорее вы сможете выбросить его из головы, тем более успешным вы будете. Вам нужно позаботиться о (кажущемся) физическом размере и (кажущейся) плотности экрана.
3. Я согласен, что лучше полагаться на физический размер. Но Android не позволяет мне делать даже это. Размер экрана по диагонали также не имеет смысла из-за разного соотношения сторон. Почему нет отдельных определителей small / normal / large / xlarge для width и height?
4. @Shoooshpanchick: Вероятно, потому, что соотношения сторон не будут сильно меняться. Данные, как правило, будут находиться в диапазоне 4: 3-16: 9, который очень узок по сравнению с диапазоном плотностей или размеров. Существуют классификаторы «портрет» и «альбомная ориентация», что в значительной степени является единственным, э-э, аспектом соотношения сторон, который играет роль. Опять же, вы можете делать с Java-кодом все, что вам нравится.