Я учусь программировать на телефоне Android. Однако я не уверен, как заставить мое приложение работать на экранах разных размеров и разрешений.
Я прочитал учебник на сайте Android и до сих пор не знаю, как это сделать.
Во-первых, я знаю, что есть разные файлы, поэтому можно создать макет для каждого размера, но моя проблема в том, что большую часть экрана необходимо создавать динамически, чтобы в эти файлы не было много места.
Так что я не уверен, как Android изменить размер динамических элементов управления в зависимости от размера экрана.
Я также читал, что создавать элементы управления в любом месте, кроме файла xml, - плохая практика, поскольку он разделяет логику представления и логику программирования. Однако они никогда не говорят о том, нужно ли вам динамически создавать эти элементы управления, что вам следует делать.
Так есть ли другой способ сделать это, который считается хорошей практикой?
Редактировать
Я получаю эту ошибку при попытке запустить приложение Switcher.
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: Error type 2
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: Error: Unable to connect to activity manager; is the system running?
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: usage: am [start|broadcast|instrument|profile]
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: am start [-D] INTENT
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: am broadcast INTENT
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: am instrument [-r] [-e <ARG_NAME> <ARG_VALUE>] [-p <PROF_FILE>]
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: [-w] <COMPONENT>
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: am profile <PROCESS> [start <PROF_FILE>|stop]
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: INTENT is described with:
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: [-c <CATEGORY> [-c <CATEGORY>] ...]
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: [-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...]
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: [--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...]
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: [-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...]
[2010-04-27 12:06:41 - ViewSwitcherTest] ActivityManager: [-n <COMPONENT>] [-f <FLAGS>] [<URI>]
На ваш вопрос: это динамично, потому что
кнопки в моем примере растут и
сжать в зависимости от одного из 3
возможные размеры, потому что они используют
масштабированный пиксель (вы, вероятно, знаете, что
вам не нужно иметь дело с экраном
размеры сама). Итак, масштабированный пиксель
по сравнению с реальным пиксель имеет размер
0,75px, 1,0px или 1,5px. Android
автоматически и динамически настраивается
это к реальному размеру. Так ты не
Об этом нужно позаботиться в вашем коде.
Так что, если я использую масштабированные пиксели, мне не нужно беспокоиться о разном размере экрана?
На данный момент я не знаю пример
кроме как в играх, где вам приходится иметь дело
с «реальным» пикселем. Но если вы хотите использовать
умножьте его на значение
плотность тока. Это ваше "соотношение".
У меня нет примера с мячом
больше, но у меня есть другой, который использует
та же техника. Вы можете запустить его на
разные размеры экрана, и вы будете
видеть, что кнопки всегда будут соответствовать
в макет. Вы могли бы использовать
та же техника для ваших целей. В
этот пример вы можете прокрутить с
Кнопки "Scrn" из одного вида в
еще один из 4 просмотров. (В данный момент
все они имеют черный фон, так
Вы не видите, что они разные
Просмотры). Кнопка «Ввод» выходит из
тестовое задание. Это проект Eclipse. Вы можете
скачать
Так, если я хочу иметь дело с соотношением, то я использую реальные пиксели, а не масштабированные пиксели? Какое преимущество это дает мне?
будут ли масштабированные пиксели работать при смене портрета на альбомную (т. Е. Будет ли заполнять новое найденное пространство)?
Наконец, теперь я должен сделать элементы управления с помощью кода или есть другой способ? Как я уже сказал, я получаю данные от веб-службы, которая должна выглядеть следующим образом
checkbox label label
Это может быть одна запись или 10000 записей, которых я не знаю, поэтому их нужно добавлять к чему-то, что похоже на панель окна (элементы управления там имеют полосу прокрутки).
Спасибо ♠