Динамический формат XML в Android? - программирование

Динамический формат XML в Android?

Я новичок в разработке Android и начал создавать свой собственный интерфейс. Я вижу, что вы можете либо динамически создать его (Динамические макеты):

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ScrollView sv = new ScrollView(this);
    LinearLayout ll = new LinearLayout(this);
    ll.setOrientation(LinearLayout.VERTICAL);
    sv.addView(ll);
    TextView tv = new TextView(this);
    tv.setText("Name");
    ll.addView(tv);
    EditText et = new EditText(this);
    ll.addView(et);
    Button b = new Button(this);
    b.setText("Ok");
    ll.addView(b);
}

но я также вижу, что netbeans имеет файл Resources- > layout- > main.xml. Таким образом, вы можете создать XML-макет для пользовательского интерфейса (Объявление XML-макета):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Hello World, AndroidTest"
    />
</LinearLayout>

Итак, мой вопрос в том, что я должен использовать? что рекомендуется и каковы преимущества/недостатки динамических и XML-макетов в разработке Android?

4b9b3361

Ответ 1

Использовать файлы ресурсов XML.

Во-первых, набор ресурсов (например, res/layout-land/ в дополнение к res/layout/) позволяет вам определить несколько пользовательских интерфейсов, которые будут использоваться в разных обстоятельствах, при этом система автоматически выбирает правильный по необходимости. Эквивалент в Java был бы одним неприятным набором операторов if или switch.

Во-вторых, есть инструменты, которые могут помочь вам создать эти ресурсы макета успешно. Даже если графическое здание с перетаскиванием мышью Eclipse не является вашей чашкой чая (например, вы используете NetBeans), Lint поможет указать недостатки в ваших макетах, для которых он укажет только на подмножество в эквивалентный Java-код.

В-третьих, он имеет тенденцию быть более кратким, поэтому, если вы набираете этот материал вручную, XML будет меньше печатать.

В-четвертых, примерно 98% всего образца кода, который вы найдете, будут использовать XML файлы макета, и примерно 98% всех ответов на пользовательский интерфейс, которые вы найдете здесь в StackOverflow (и других ресурсах поддержки), предполагают, что вы используете XML файлы макета. Хотя вы свободны избегать XML - возможно, вас атаковали угловые скобки как маленький ребенок или что-то в этом роде - вы будете плавать вверх по течению, сражаясь с текущим по сравнению с тем, что делают большинство разработчиков Android.

Ответ 2

Я бы рекомендовал использовать xml-макеты для большинства частей ваших проектов. Вы можете разместить макеты в разных папках, например:

макет-земля → для пейзажа

макет-порт → для портрета

layout-v15 → для версии для Android >= 15

layout-sw600dp → для экранов с определенной шириной

Используя эти классификаторы ресурсов, вы можете быстро использовать широкий спектр макетов для поддержки широкого спектра устройств Android, не требуя дополнительного кода.

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

Ответ 3

Макет на основе XML зависит от кастинга, потому что вы должны использовать:

 Button myButton = (Button) findViewById(R.id.my_button);

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

Я предпочитаю третье решение - RoboGuice Он использует шаблон инъекции зависимостей, и вы не заботитесь о кастинге и быстрее создаете приложение. Также более гибкий. Учтите, что у вас есть нормальное текстовое поле. Затем вы хотите изменить его на текстовую область. В RoboGuice это всего лишь 2 изменения (кроме изменений использования). Это также быстрее, когда вы используете Context (Контекст - очень многопользовательский объект, и сохранение ссылки на него является признаком плохого кодирования).

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

Ответ 4

Ну, я объявляю mu UI в xml (99% времени), потому что мне легче работать таким образом.

Хорошая практика для разделения логики пользовательского интерфейса и кода, XML проще описать интерфейс (подумайте об использовании этого старого дизайнера или переключитесь на Eclipse IDE и это дизайнер)

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

Просто используйте XML

Ответ 5

Я предпочитаю XML для большинства вещей, поскольку он позволяет отделять контент от кода, и он имеет тенденцию быть более чистым для редактирования, особенно когда проект становится большим, и вы забываете, что вы написали некоторое время назад. Использование XML и стилей позволит вам получить постоянный внешний вид и в приложении. Это также позволяет системе макета заботиться о тяжелом подъеме, и вы не получите взглядов, которые ссылаются на ваш контекст активности. (Что плохо, когда вы вращаетесь и ваша деятельность воссоздана). В целом это скорее быстрый вариант, и если вы можете сделать это в XML, чем мне нравится. Похоже, что большая часть андроид-архитекторов/учебников соответствует этой настройке. (См. Android Dev Docs, Марк Мерфи из CommonsWare)

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

Ответ 6

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

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