какой из них лучше?-Создание кнопок во время выполнения или время разработки в Android - PullRequest
0 голосов
/ 05 августа 2011

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

если я создам эту кнопку во время выполнения, она даст большую производительность (учитывая память, скорость, размер apk!)?

Важные требования:

  • этот макетбудет использоваться 4 различными действиями.
  • Мне нужно отображать 26 кнопок одновременно для пользователя.
  • Эти кнопки могут содержать фоновое изображение.

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

Ответы [ 5 ]

2 голосов
/ 05 августа 2011

Поскольку все статически находится в ваших ресурсах, хорошо иметь все в XML-файлах.

Тем не менее, можно утверждать, что «понятие» парсинга xml layout files вашего проекта накладывает накладные расходы на процесс создания представлений.

Я бы пошел с хорошо спроектированным макетом , определенным в xml.

1 голос
/ 05 августа 2011

Хлоп. В то время как XML является лучшим практическим ответом, 26 из что-нибудь требует некоторого динамического создания во время выполнения или, по крайней мере, их комбинации. В любом случае вы не увидите большой разницы во времени обработки или размере apk - все сводится к обслуживанию кода.

Например, подумайте, что произойдет, если вы захотите изменить или добавить новый атрибут, скажем, padding, для каждой из ваших буквенных кнопок. Вы хотите вручную изменить все эти XML-элементы или подумать над умным регулярным выражением, чтобы правильно найти / заменить?

Я бы выбрал комбинацию стилей, оператор <include> и модификацию времени выполнения для комплексного, поддерживаемого решения. Сначала создайте одну кнопку в стиле, который, как вы думаете, вы хотите, чтобы все ваши кнопки выглядели. Извлеките свой стиль LetterButton из style.xml и используйте вместо него атрибут android:style="@style/LetterButton". Это позволит вам изменить свой стиль в одном файле и повлиять на все кнопки с буквами.

Затем извлеките саму кнопку в файл <include>. Вы можете сделать это, щелкнув правой кнопкой мыши версию кнопки с графическим интерфейсом и выбрав «Извлечь включают ...». Затем расположите свои <include> кнопки так, как вам нужно, возможно, в <TableLayout>. Убедитесь, что вы даете каждому уникальный идентификатор, например, от @+id/letter_button_0 до _25. Атрибут text для всех этих кнопок может быть любым, вы установите их динамически позже.

Наконец, в вашем onCreate определите массив целых чисел в форме {R.id.letter_button_0, ...} и массив строк в форме {"A", ...} и выполните итерацию те, которые делают button = findbyId (int), button.setText (String), чтобы поставить букву на каждой из ваших кнопок.

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

1 голос
/ 05 августа 2011

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

Отображение XML - лучшая практика: http://developer.android.com/guide/topics/ui/declaring-layout.html

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

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

0 голосов
/ 05 августа 2011

Вы можете создать макет со статическими активами в нем и иметь динамический текстовый контент и динамический фон. Вы можете использовать свойства кнопки "ушел и видим" в нем.

0 голосов
/ 05 августа 2011

Вы должны создать его в XML-файле и сделать видимым и невидимым, как вам нужно.

...