Почему я не могу указать ресурсы в зависимости от разрешения?

#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». Что это значит? Будет ли экран 360x360dp small ? Как насчет 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-кодом все, что вам нравится.