Почему мы должны использовать макеты xml?

После нескольких лет разработки Android я несколько месяцев задавался вопросом, почему я должен использовать xml-макеты для создания пользовательского интерфейса моего Android-приложения.

Я понимаю эту часть MVC и графического интерфейса интерфейса реального времени.

Если я ошибаюсь, пожалуйста, уберите меня из незнания и простите меня, но я не могу установить положение представления, ровно, 8% ширины экрана для поля и 70% ширины экрана для ширины, например.

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

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

Но, даже делая это, как (снова) Google Doc говорит

Отношение dp-to-pixel будет меняться с плотностью экрана, но не обязательно в прямой пропорции.

И вместо того, чтобы не обязательно, они должны сказать, в основном, никогда не глядя на невероятное количество различных устройств. В зависимости от вашего проекта это может быть проблемой. (Или вы хотите, чтобы ваш клиент смотрел ваш «слегка разложенный» пользовательский интерфейс на том, кто знает китайское устройство)

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

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

Именно так Apple это делает, и поэтому, когда вы открываете папку на 9,7-дюймовом iPad с красивым дисплеем сетчатки, она отображает только 9 значков.

Планшет – это не просто большой телефон. Это действительно не так. Кроме того, устройства iOS имеют в основном одинаковое соотношение сторон, так что они заботятся о соотношении сторон.

На Android, однако, вы не можете просто сказать, что проблема «позаботилась о соотношении сторон» и что эта проблема волшебно уходит. Лучше всего использовать лучшие методы Android для правильной обработки пропорций.

При этом не стоит этого делать. Например, вам не нужно использовать все 8 ковшей плотности. Посмотрите на официальную панель инструментов, чтобы узнать, какие устройства используются на самом деле, прежде чем пытаться оптимизировать для каждого сценария.

Кроме того, вам не нужно постоянно слушать Google. Например, я уверен, что Google понравится, что вы переводите свое приложение так, чтобы оно было доступно более чем на 68 разных языках по всему миру, но то, что хорошо для Google, не обязательно хорошо для вас. Android фактически позволяет вам выбирать инструменты, которые вы хотите использовать для создания своего приложения. Они не заставляют вас использовать какой-либо конкретный.

  • Маска ImageView с круглым фоном угла
  • Android: макет xml для списка с различными элементами
  • Не удалось найти следующие classы: android.support.v7.internal.app.WindowDecorActionBar
  • Центрировать кнопку в линейном макете
  • Обновите обновление ProgressBar
  • Добавить текст / метку на ссылки в графе D3 force
  • Плагин Android заменяет вид другим видом во время выполнения
  • Горизонтальная вкладка «и»
  • ViewPager setCurrentItem (pageId, true) НЕ плавает
  • Изменение размеров макетов программным способом (как анимация)
  • Динамическое добавление содержимого в линейную компоновку?
  • Interesting Posts

    Как заставить Windows правильно масштабировать панель задач после переключения на мониторы с разными DPI?

    Как я могу вернуть несколько значений из функции в C #?

    Windows 10 Explorer отключает имя папки после символа последнего периода

    Кнопки диалогового окна не работают в Eclipse на Ubuntu 9.10

    jQuery .load () не работает в Chrome

    Safari: как напрямую перейти от «omnibox» (т. Е. «Поле интеллектуального поиска») к результатам поиска (как в Chrome)?

    Языковые настройки Windows 8 не меняют язык во всем мире

    После переименования столбца введите keyerror

    Объединение двух lambda-выражений в c #

    Табличное представление Javafx не показывает данные во всех столбцах

    В чем разница между квадратными скобками и круглыми скобками в регулярном выражении?

    Частичная специализация шаблона функций C ++?

    Как Mac OSX уделяет приоритетное внимание сетевым интерфейсам при маршрутизации?

    Когда и как следует использовать переменную ThreadLocal?

    CSS 100% высота

    Давайте будем гением компьютера.