OckhamsRazor,
Ответ очень многое зависит от ваших потребностей, гибкость и знания.Первое, что нужно понять, это то, что каждый макет, созданный с помощью XML или программно, может быть специально настроен или сделан для соответствия многим экранам через свойства.
... и как-то всегда приходится прибегать к Java-коду, чтобы построить макеты. В профессиональной среде разработки это приемлемо?
Да, это так. Android делает их доступными, чтобы вы могли сделать именно это. Тем не менее, преимущества управления макетами через XML включают стандартную сегрегацию MVC, более простую отладку и более легкое изменение времени ресурса, если это необходимо. Кроме того, вы можете легко поддерживать несколько копий макетов в зависимости от конфигурации устройства.
... Кто-нибудь действительно смог разработать приложения со сложными видами, используя только XML-файлы?
Абсолютно! Есть несколько удивительных программ, которые полностью используют XML, а не программные представления. Ключом к ним является то, сколько информации (то есть свойства нестандартного вида) требуется из родительских представлений. Даже в тех случаях есть способы передать эту информацию, если вы знаете, где и как это сделать.
Или я что-то не так?
Я так не считаю. Честно говоря, я работал в обоих направлениях в зависимости от необходимости. Я бы сказал, что это действительно сводится к твоему недостатку знаний о причудах. Но задача -, чтобы выполнить эту работу. Вот пример: Есть несколько случаев, когда я не знаю, насколько все должно быть до его запуска на устройстве, и есть моменты, когда я делаю устройство соответствующим требованиям моего макета. В конечном счете, я использую следующую таблицу, чтобы сделать мои определения.
- Нужен ли информация от родительских макетов, которое в стороне от просмотра свойств
- мне нужно динамически размера больше, чем один элемента, независимо друг от друга делать.
- Является ли тип вида предопределенным или он изменится?
Если ответ на 2 из 3 из них «да», я буду использовать некоторый уровень программной компоновки. Если нет, я пошлю чистый XML. При этом программирование является одной из тех профессий, которые поощряют изобретательность (при условии, что это безопасно), и почти все может быть достигнуто любым количеством способов. В конечном счете, я бы сказал, делайте то, что облегчает работу над качественными приложениями.
Google дает свои рекомендации на основе собственных знаний программистов и их общей практики. Они также создали платформу, поэтому они знают, какие вещи оптимизированы в каких направлениях. Все о опыте, и у всех нас есть свои. Если у вас есть проблемы с использованием XML, стоит потратить время, чтобы выяснить причуды просто так, чтобы это был другой инструмент для использования. Кроме того, он предоставит вам информацию, необходимую для ответа на этот вопрос.
Подводя итог: я мог бы сказать шоколад лучше, но если вам нравится ваниль, вы не согласитесь. Помните о недостатках и преимуществах каждого и найдите время, чтобы узнать, как выполнять одни и те же задачи с помощью обоих методов. Это сделает вас лучшим программистом и даст вам лучшее представление о том, когда использовать эту технику.
Надеется, что это помогает,
FuzzicalLogic
Спасибо Олли. Я очень воодушевлен вашим XML-ориентированным подходом. Отчасти причина в том, что у меня довольно слабая система разработки, и я не могу работать с параллельными эмуляторами. Это одна из основных причин использования кода, а не XML, потому что я могу быть уверен, что мои макеты будут одинаковыми на всех устройствах. Otoh, если я использую XML, мне придется работать с эмуляторами, чтобы я мог протестировать каждый макет и фактически проверить, как выглядит пользовательский интерфейс. – OckhamsRazor
Также, если у вас есть какие-либо проекты с открытым исходным кодом для Android, на которые я могу ссылаться? – OckhamsRazor
Если вы посмотрите на образцы кода приложения Android в SDK или книги Mark Murphy (Commonsware), вы увидите множество примеров использования XML. Я использую физические устройства для тестирования - несколько из них обеспечивают высокое покрытие для типов экрана и ОС. Я не думаю, что это хорошая идея, чтобы медленная машина-разработчик повлияла на архитектуру ваших приложений. –