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

Я из фона Java Swing. Могу ли я знать, почему использование XML для создания GUI является хорошей практикой в ​​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?

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

Ответы [ 7 ]

24 голосов
/ 23 февраля 2011

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

8 голосов
/ 23 февраля 2011

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

  • .NET-разработка использует XAMLРазработка XML
  • Flex для веб-приложений и настольных ПК с помощью AIR (XML
  • Разработка XUL - XML ​​
  • Для Swing существует ~ 20 привязок XMLи SWT

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

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

1 голос
/ 23 февраля 2011

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

1 голос
/ 23 февраля 2011

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

1) Дизайн компоновки XML прост для понимания, а пользовательский интерфейс приложения отделен от кода приложения.

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

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

Итог:

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

0 голосов
/ 23 февраля 2011

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

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

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

0 голосов
/ 23 февраля 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...