Intereting Posts

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

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

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

Solutions Collecting From Web of "Лучшие практики: макеты на Android (Programmatic vs XML)"

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

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

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

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

OckhamsRazor,

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

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

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

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

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

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

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

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

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

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

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

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

FuzzicalLogic

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

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

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

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

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

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

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

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