Почему использование XML для создания графического интерфейса является хорошей практикой в ​​Android

Я из фона Java Swing. Могу ли я узнать, почему использование XML для создания графического интерфейса является хорошей практикой в ​​Android? Например, вместо написания кода в (что заставляет меня чувствовать себя более комфортно с ним, как я использую для рабочего стола Swing)

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HelloAndroid extends Activity {
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       TextView tv = new TextView(this);
       tv.setText("Hello, Android");
       setContentView(tv);
   }
}

Мы пишем код в формате XML.

import android.app.Activity;
import android.os.Bundle;

public class HelloAndroid extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

В учебнике указано, что

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

Однако, я действительно не покупаю эту идею, поскольку чувствую, что создание отдельного XML файла является более громоздким.

Может ли кто-нибудь дать пример реального мира (в смысле Android), почему использование XML для создания графического интерфейса лучше, чем простой Java-код?

Если программирование GUI через XML - действительно хороший материал, почему он все еще не стал распространенной практикой среди разработчиков настольных приложений GUI?

Ответы

Ответ 1

Использование XML-макетов имеет много преимуществ по сравнению с Java-кодом. Вы получаете легкие ссылки на строки, чертежи, размеры, темы и т.д. Но самым большим преимуществом является автоматическая поддержка нескольких конфигураций. Без изменения кода вы можете иметь разные макеты для пейзажа и портрета, просто имея XML-макет в layout-land/and layout-port/. И вы можете сделать то же самое, чтобы адаптировать макет к различным разрешениям, языкам и т.д.

Ответ 2

Если GUI-программирование через XML - действительно хороший материал, почему он все еще не стал обычной практикой среди разработчиков настольных приложений GUI?

  • В .NET-разработке используется XAML, который представляет собой XML
  • Разработка Flex для Интернета и рабочего стола через AIR, который представляет собой XML
  • Разработка XUL - это XML
  • ~ 20 привязок XML для Swing и SWT

Учитывая, что только .NET-разработка, вероятно, превосходит все другие разработки графического интерфейса для настольных компьютеров, я бы сказал, что она "стала обычной практикой среди разработчиков настольных приложений GUI".

Кроме того, использование XML для GUI является одной из сторон более крупного "декларативного интерфейса", который имеет много не-XML-форм, таких как JSON-ish QML для Qt. AFAICT, все основные разработки графического интерфейса перемещаются для включения такой декларативной разметки в одну форму или способ.

Ответ 3

Как я думаю, вы находитесь на фоне Java Swing, так что, возможно, вы считаете, что программно создавая макет является легкой задачей. Но есть много причин, по которым вы можете думать о стратегии XML:

1) Конструкция XML-макета легко понять, а также сохранить пользовательский интерфейс приложения отдельно от кода приложения.

2) Существует множество устройств на рынке с разной конфигурацией дисплея и Android, что упрощает задачу создания пользовательского интерфейса для всех с использованием XML и сохранения их отдельно.

3) Также, если вы хотите разработать многоязычное приложение, тогда лучше всего использовать XML.

Нижняя строка:

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

Ответ 4

Подумайте о создании пользовательского интерфейса с использованием HTML/CSS. Я всегда считаю это удобным по сравнению с Swing. И я верю, что это не только я, но и другие люди тоже думают так же, т.е. Jelly Swing.

Ответ 5

Ну, во-первых, он позволяет использовать GUI-сборщики (например, построенный разработчиком eclipse Builder).

Это также помогает отделить вашу бизнес-логику от логики отображения.

Наверное, однако, вы очень хорошо разбираетесь в коде Swing, и вы забыли, сколько времени потребовалось для наращивания этих навыков.:)

Ответ 6

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

Ответ 7

Вот мои мысли:

  • отличный способ позаботиться о моем водопроводе GUI.
  • всякий раз, когда мне нужно экспериментировать с размерными значениями GUI, код не нуждается в перекомпиляции
  • XML-макеты, как правило, очень легко понять - первоначальная разработка графического интерфейса упрощается