Подтвердить что ты не робот

Лучшие практики: макеты на Android (Programmatic vs XML)

Этот вопрос прослушивал меня в течение некоторого времени. Я уже разработал пару приложений на платформе Android и почему-то всегда прибегаю к Java-коду, чтобы построить макеты. В профессиональной среде разработки это приемлемо? Или должны ли XML файлы подходить к подходу? Я обычно считаю XML более утомительным, и часто эти макеты не выглядят одинаково на всех устройствах. Я просто не понимаю. С профессиональной точки зрения, кто-нибудь действительно мог разрабатывать приложения со сложными представлениями, используя только XML файлы? Этот вопрос убивает меня, потому что Google рекомендует использовать XML, но пользовательский интерфейс никогда не будет выглядеть одинаково на всех устройствах, если он не будет программным. Или я делаю что-то неправильно?

Обратите внимание, что я имею в виду Android 2.2 и 2.3, которые большинство пользователей используют.

4b9b3361

Ответ 1

Я использую XML-макеты практически для каждого фрагмента и активности каждого приложения, которое я пишу. Я очень редко вижу необходимость динамического создания представлений, настройки ListViews, отображения/скрытия представлений и т.д., Которые нужно делать в коде. Для меня преимуществами XML являются:

  • Возможность использования редакторов макетов (Eclipse)
  • Легче просматривать макеты
  • Возможно использовать автоматическую локализацию макетов
  • Легко поддерживать разные параллельные макеты для разностных устройств (экранов).
  • Может получить представление о макете, посмотрев на него (проще, чем код).
  • Легко разбивать макеты на куски (фрагменты, включает и т.д.), чтобы удалить дублирование.
  • Сохраняет разделение между визуальным дизайном и функциональностью за его пределами.

Я не могу придумать никаких веских причин поместить все мои макеты в код - это звучит как ад.

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

Ответ 2

OckhamsRazor,

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

... и почему-то всегда приходится прибегать к Java-коду, чтобы строить макеты. В профессиональной среде разработки это приемлемо?

Да, это так. Android делает их доступными, чтобы вы могли сделать именно это. Тем не менее, преимущества управления макетами через XML включают стандартную сегрегацию MVC, более простую отладку и более легкое изменение времени ресурса, если это необходимо. Кроме того, вы можете легко поддерживать несколько копий макетов в зависимости от конфигурации устройства.

... Кто-нибудь действительно смог разрабатывать приложения со сложными представлениями, используя только XML файлы?

Абсолютно! Есть несколько удивительных программ, которые полностью используют XML, а не программные представления. Ключом к ним является то, сколько информации (то есть свойства нестандартного вида) требуется из родительских представлений. Даже в тех случаях есть способы передать эту информацию, если вы знаете, где и как это сделать.

Или я делаю что-то неправильно?

Я так не думаю. Честно говоря, я работал в обоих направлениях в зависимости от необходимости. Я бы сказал, что это действительно сводится к твоему недостатку знаний о причудах. Но работа , чтобы выполнить работу. Вот пример: Есть несколько раз, когда я не знаю, насколько все должно быть до его запуска на устройстве, и есть моменты, когда я делаю устройство соответствующим моим требованиям макета. В конечном счете, я использую следующую таблицу, чтобы сделать мои определения.

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

Если ответ на 2 из 3 из них "да", я буду использовать некоторый уровень программной компоновки. Если нет, я пошлю чистый XML. При этом программирование является одной из тех профессий, которые поощряют изобретательность (при условии, что это безопасно), и почти все может быть достигнуто любым количеством способов. В конечном счете, я бы сказал, делайте то, что облегчает работу над качественными приложениями.

Google делает свои рекомендации на основе собственных знаний программистов и их общей практики. Они также создали платформу, поэтому они знают, какие вещи оптимизированы в каких направлениях. Все о опыте, и у всех нас есть свои. Если у вас есть проблемы с использованием XML, стоит потратить время, чтобы выяснить причуды просто так, чтобы это был другой инструмент для использования. Кроме того, он предоставит вам информацию, необходимую для ответа на этот вопрос для себя.

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

Надеюсь, что это поможет,

FuzzicalLogic

Ответ 3

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

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

Ответ 4

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

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

Я лично предпочитаю делать все программно, и мне быстрее развиваться, чем писать XML, с библиотеками и классами, которые я создал. XML быстрее выполняется из коробки.

Что касается производительности, на самом деле нет разницы, о которой стоит упомянуть, если вы не используете одно и то же представление так повторяемо, в то же время, до такой степени, что он больше не подходит на экране много раз. Я проверил, сколько текстовых представлений Android может отображать на Moto X - Android 4.4, и он не может получить больше 5000, но для этого никогда не будет цели. Если вы в этот момент, вам нужно либо динамически загружать и выгружать данные, либо просто делать что-то очень неправильное для начала.

Итак, изучите обе стороны, определенно узнайте за и против своего стиля программирования, потому что нет правильного ответа для всех, и пусть свободно и веселится.

Ответ 5

Гораздо лучше отделить макет и поместить его в xml файл. Иногда мне приходится корректировать макет кода, но это всегда исключение, и только когда я определяю, что это невозможно сделать в макете .xml. Если вы правильно используете представления макетов, приложение должно выглядеть очень похоже на всех устройствах.