Visual studio программирование под android

Операционная система Android основана на виртуальной машине Dalvik (VM). Которая представляет собой мобильную оптимизированную виртуальную машину. Аналогичную виртуальной машине Java. Oxygene for Java поставляется с шаблонами для создания проектов Android и производит как собственные файлы Java JAR. Так и файл APK Android. Необходимый для развертывания на устройстве Android. Поскольку Android работает на таком широком спектре устройств с различными размерами экрана. Форматами и ориентациями. Он был специально разработан без конструкторской поверхности WYSIWYG для построения пользовательского интерфейса.

Вместо этого XML-файл (похожий на XAML .NET) редактируется для размещения визуальных элементов. Существует бесплатный онлайн инструмент DroidDraw для построения пользовательских интерфейсов Android через интерфейс WYSIWYG. Но рекомендуется непосредственно редактировать XML.

Предпосылки и эмуляторы

Чтобы начать разработку Android. Вам необходимо установить Java Development Kit и Android SDK. Как описано здесь (Fire) и здесь (Visual Studio).

Когда все инструменты и платформы будут установлены. Вы сможете создать эмулятор Android, также известный как Android Virtual Device или AVD. Вы можете сделать это из Диспетчера виртуальных устройств Android. Который доступен из диспетчера SDK. Выбрав Инструменты Управления AVDs.

Просто нажмите кнопку Создать. Дайте эмулятору имя и выберите API в целевом поле. Вы можете выбрать любой установленный уровень API. Например Android 2.2 — API Level 8 (также известный как Froyo) или Android 4.0.3 — API Level 15 (также известный как Ice Cream Sandwich). После того как вы указали размер SD-карты для эмулятора (скажем, 512) и выбрали скин (разрешение экрана). Вы можете использовать кнопку Create AVD для завершения работы.

Создайте новую виртуальную машину Android

Вы можете запустить эмулятор с этого экрана. Выбрав его и нажав кнопку Пуск.

Android AVD Manager

Примечание: Когда вы повторно запускаете SDK Manager. Он часто находит обновления для установки. Как упоминалось ранее. Если Android SDK был установлен в папку по умолчанию. Для его установки потребуются права администратора. Поэтому обязательно запустите его от имени администратора (или установите Android SDK в пользовательское место. Чтобы все было проще).

Первый раз, когда вы создаете или открываете проект Elements для Android. Он выполнит Если вы установили их в пользовательские папки. И он не может найти их. Это дает вам возможность указать папки установки.

Приступая к работе

Как в Visual Studio. Так и в Fire новое диалоговое окно проекта предоставляет шаблон приложения Android под Oxygene для Java и Android.

Visual Studio 2012 - Oxygene for Java - Android - Новый проект

Новый Android-проект создается с помощью одного простого действия под названием MainActivity. Активность – это самая основная часть приложения для Android-единственная. Сфокусированная вещь. Которую может сделать пользователь. Предварительно созданный MainActivityсодержит небольшое количество кода для настройки простого пользовательского интерфейса с кнопкой. Которая при нажатии отображает увеличивающееся число в его заголовке.

Визуальное представление экрана для MainActivityопределяется в XML-файле layout-xml

 LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_vertical"> LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal"> Button android:id="@+id/MyButton" android:text="@string/my_button_text" android:layout_width="wrap_content" android:layout_height="wrap_content">Button> LinearLayout> LinearLayout> 

Элементы управления именуются с

помощью атрибута android:id в XML-макете. Вы ставите префикс @+id/ перед выбранным именем. А затем можете ссылаться на идентификатор элемента управления в коде. Добавляя к нему префикс R.id. (все идентификаторы становятся членами класса id. Который вложен в класс ресурсов R). Чтобы получить доступ к элементу управления. Вы можете передать идентификатор в метод findViewById() действия. Например, кнопка. Названная в приведенном выше XML-макете. Имеет идентификатор. Доступный в коде как R. id.MyButton. Чтобы получить доступ к объекту button. Вы должны использовать

Button(findViewById(R. id.MyButton)) — обратите внимание на типаж. Чтобы получить кнопку object. Который необходим. Поскольку функция findViewById() возвращает объект View. Один из типов-предков класса Button.

Строки, на которые ссылаются в атрибутах XML с префиксом @string/ или в коде как на члены класса R. string. Определяются в файле ресурсов

 resources> string name="app_name">org.me.androidapplication1string> string name="my_button_text">Click Me!string> string name="my_button_text_2">%1$d clicks!string> resources> 

Чтобы ссылаться на строковый ресурс в коде из метода activity. Вы просто вызываете

getString(R. string.my_button_text). getString () — это метод класса Activity (или, точнее. Метод одного из классов-предков Activity, Context). Как вы можете видеть. Вы передаете методу идентификатор строкового ресурса. И он возвращает результирующую соответствующую строку.

Свойство представляет некоторые данные с возможными побочными эффектами при чтении и/или записи. Свойство Foo определяется в терминах геттерной функции getFoo() . Которая возвращает значение и setFoo() функция setter. Которая передает значение.

Java не поддерживает понятие свойств. Поэтому классы имеют множество методов геттера и сеттера. Выставленных вместо их эквивалентных свойств. При работе с Oxygene for Java у вас есть выбор: вызывать методы типа getter/setter. Существующие в любых библиотеках Java. На которые вы ссылаетесь. Например в Android SDK. Или использовать свойство. Которое обычно существует. Таким образом. В приведенном выше случае вы можете получить доступ к строковому ресурсу либо путем вызова:

type MainActivity = public class(Activity) private Count: Integer := 0; public method onCreate(savedInstanceState: Bundle); override; method ButtonOnClick(v: View); end; ... method MainActivity.onCreate(savedInstanceState: Bundle); begin inherited; ContentView := R.layout.main; var myButton: Button := Button(findViewById(R.id.MyButton)); myButton.OnClickListener := new interface View.OnClickListener(onClick := @ButtonOnClick); end; method MainActivity.ButtonOnClick(v: View); begin inc(Count); (v as Button).Text := WideString.format(String[R.string.my_button_text_2]. Count); end; 

onCreate-это метод. Вызываемый при первом создании действия и при инициализации действия.

После вызова унаследованного метода вы можете увидеть. Что идентификатор ресурса макета назначен свойству

contentView, хотя. Учитывая примечание выше. Должно быть ясно. Что на самом деле мы передаем идентификатор ресурса setContentView(). Это устанавливает файл макета

Далее код находит кнопку с идентификатором MyButton и сохраняет ссылку на нее в локальной переменной.

Последняя задача onCreate () — настроить обработчик события click кнопки. Который выполняется путем присвоения выражения свойству OnClickListener кнопки или, по правде говоря. Передачи его методу setOnClickListener (). Поскольку Java использует интерфейсы для определения сигнатур событий. Мы используем встроенную реализацию интерфейса Oxygene. Чтобы связать наш

метод ButtonOnClick с методом onClick представления кнопки.Интерфейс события OnClickListener.

Сам метод обработчика событий ButtonOnClick увеличивает переменную экземпляра класса Count. А затем использует это значение для создания форматированной строки . Которая затем устанавливается в качестве заголовка кнопки с помощью свойства Text (или метода setText ()). Форматирование строки использует значение строкового ресурса my_button_text_2 (показано ранее). Который использует синтаксис строки формата Android. Вызываемый метод форматирования на самом деле является String.format(). Он вызывается как WideString.format (), чтобы избежать двусмысленности со свойством String (метод getString ()) класса Activity. Который мы рассмотрели чуть выше. ВайдСтринг предоставляется Oxygene как синоним строкового типа.

Одно действительно важное значение в файле strings.android-xml-это строка app_name. Это используется приложением дважды:

  • в строке заголовка действия записана эта строка и
  • список установленных приложений на устройстве использует эту строку для идентификации приложения.

Обязательно обновите app_name, чтобы сделать его значимым.

Вы можете найти ссылки на app_name, которые влияют на строку заголовка и список установленных приложений в [http://developer.android.com/guide/topics/manifest/manifest-intro.html Файл манифеста Android]. Каждое приложение Android имеет файл манифеста. Чтобы Android знал идентичность пакета приложения. Компоненты в приложении. Любые разрешения. Необходимые для работы. И некоторые другие детали системы.

 manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.me.androidapplication1"> application android:persistent="true" android:label="@string/app_name" android:icon="@drawable/icon" android:debuggable="true"> activity android:label="@string/app_name" android:name="org.me.androidapplication1.MainActivity"> intent-filter> action android:name="android.intent.action.MAIN" /> category android:name="android.intent.category.LAUNCHER" /> intent-filter> activity> application> uses-sdk android:minSdkVersion="4" /> manifest> 

В этом примере манифеста приложения вы можете видеть. Что приложение получает текстовую метку и значок. А отдельное действие идентифицируется по имени класса и также получает метку. Замысловатое объявление фильтра намерений внутри этого действия-это просто стандартный код. Необходимый для того. Чтобы сообщить Android. Что это действие является основным действием приложения.

Когда вам нужно добавить больше строк в свой проект. Просто отредактируйте файл

Все они были бы совершенно валидны и пригодны для использования. Если бы им было присвоено стандартное расширение .xml. Вот в чем причина .расширения layout-xml и .android-xml предназначены для включения соответствующего поведения IntelliSense (или завершения кода) при работе с этими файлами.

Запуск Приложения

Когда вы создаете свое приложение. Компилятор Oxygene сначала создает обычный файл Java JAR. А затем набор инструментов Android создает файл Android APK (Android PacKage). Файл JAR-это просто скомпилированный код (Java byte code). Но файл APK-это байт-код Java. Обработанный для запуска на виртуальной машине Dalvik Android со всеми необходимыми ресурсами. Упакованными в файл. Как только пакет собран. Он готов к запуску либо на AVD (другими словами. На эмуляторе). Либо на физическом устройстве.

Затем вы подключаете устройство к КОМПЬЮТЕРУ с помощью соответствующего USB-кабеля. Вы должны быть в состоянии найти инструкции по установке драйвера на веб-сайте вашего производителя или с помощью поисковой системы.

Oxygene debugger автоматически развернет APK-файл в эмуляторе и запустит его. Когда вы используете кнопки Start Debugging или Start Without Debugging в Visual Studio (или используете нажатия клавиш F5 или Ctrl+F5 соответственно). Если вы выберете Начать отладку (или F5), вы можете установить точки останова и отлаживать свое приложение из Visual Studio по мере его запуска на эмуляторе или физическом устройстве.

Если у вас запущено виртуальное Android-устройство. А также физическое Android-устройство. Подключенное к компьютеру. Вам нужен какой-то способ сообщить Oxygene. На какое устройство следует нацелиться при запуске приложения. Вы можете выбрать Android-устройство в разделе Android свойств проекта.

Если вы хотите установить APK вручную. Вы можете использовать Android Debug Bridge (ADB) инструмент командной строки из командной строки Windows.

Просто запустите adb с параметром install и именем APK для загрузки. Если APK уже установлен. Вы также должны указать-r. Предполагая, что каталог adbбыл добавлен в путь поиска. Вы бы использовали:

adb install -r org.me.androidapplication1.apk

-d и-e, чтобы указать либо устройство. Либо эмулятор соответственно, например:

adb -e install -r org.me.androidapplication1.apk

Эмулятор Android - Развертывание

Как только APK установлен. Вы можете запустить его так же. Как и любое другое приложение.

Эмулятор Android - Работает

Элементы пользовательского интерфейса

Тег в разделе layout-xmlНекоторые другие макеты-это FrameLayout, TableLayout и RelativeLayout.

  • FrameLayout — Макет фрейма предназначен для блокировки области на экране для отображения одного элемента.
  • LinearLayout — Макет. Который упорядочивает свои дочерние элементы в один столбец (вертикальный) или одну строку (горизонтальный). Ориентация по умолчанию-горизонтальная.
  • RelativeLayout — Макет. В котором позиции дочерних элементов могут быть описаны по отношению друг к другу или к родителю.
  • TableLayout — макет. Который упорядочивает свои дочерние элементы в строки и столбцы. TableLayout состоит из нескольких объектов TableRow, каждый из которых определяет строку. Контейнеры TableLayout не отображают пограничные линии для своих строк. Столбцов или ячеек. Каждая строка имеет ноль или более ячеек; каждая ячейка может содержать один объект представления. В таблице столько же столбцов. Сколько и в строке с наибольшим количеством ячеек. Таблица может оставить ячейки пустыми. Ячейки могут охватывать столбцы. Как и в HTML.

Как только у вас есть макет. Вы можете добавить другие элементы управления . Такие как Button, ImageButton, TextView, ImageView и другие.

Есть довольно хороший учебник по пользовательскому интерфейсу. Имейте в виду. Что образцы кода будут на Java вместо Oxygene. Однако вы должны обнаружить. Что функция IDE окислителя может помочь в переносе кода Java на синтаксис Oxygene. Если у вас есть фрагмент кода Java в буфере обмена. Вы можете нажать Alt+Ctrl+V, затем J и окислитель сделает все возможное. Чтобы перевести код для вас. Он не обязательно будет выполнять идеальную работу. Поскольку он работает без контекста. Но он должен выполнять основную часть перевода для вас.

Окислитель может переносить фрагменты Java в кислород

А теперь Тост

Когда вы хотите всплывающее сообщение для ваших пользователей из приложения Android. Вы делаете тост. Тост — это небольшое всплывающее окно. Которое появляется перед текущей активностью в течение короткого времени. Просто вызовите метод makeText в классе Toast. Чтобы создать объект toast. А затем вызовите show (), чтобы вывести его на экран. Существует две версии makeText, и каждая из них принимает 3 параметра. Вот пример вызова:

Toast.makeText(self, "Hello World! This is a toast.", Toast.LENGTH_SHORT).show(); 

Первый параметр — это контекст. К которому относится тост. Вы можете либо передать свою активность (используя self, если работаете в методе activity). Либо ссылку на единственный объект приложения. Который существует в приложении (доступный через метод getApplicationContext() activity), так как и Activity, и Application наследуют от класса Context.

Второй параметр — это текстовая строка для отображения. Это может быть либо литеральная строка. Как указано выше, либо. Предпочтительно. Идентификатор строкового ресурса. В зависимости от используемой версии makeText. Таким образом. Чтобы передать идентификатор ресурса. Вы бы ссылались на строку. Определенную в String[R. string.some_identifier].

Последний параметр-это продолжительность, прежде чем тост будет автоматически отклонен, либо Тост.LENGTH_SHORT или Тост.LENGTH_LONG.

Вызов makeText возвращает объект тоста. Есть другие методы на объекте тоста, чтобы настроить его. Метод show в конечном итоге отображает тост.

Просто добавьте приведенный выше код в обработчик событий ButtonOnClick в MainActivity, и когда вы запустите его в эмуляторе или на устройстве. Вы увидите. Что тост появляется при нажатии кнопки.

Эмулятор Android - Работает с тостом

Тост никогда не получает фокуса и всегда исчезает после тайм-аута продолжительности.

Документация

Для документации Android вы можете использовать массу информации. Предоставленной Google в своих справочниках по API и руководствахпо API . Естественно. Эта документация ориентирована на Java — программистов. Но на самом деле это должно быть лишь незначительным неудобством-сигнатуры методов изложены в синтаксисе C-стиля, а не в стиле Pascal. Oxygene может изначально получить доступ к любому из классов Android SDK и вызвать любой из доступных методов. Поэтому лучшей документацией является документация. Написанная поставщиком платформы: Google.

В этом учебнике различные типы и методы классов были связаны с соответствующей документацией Android SDK. Вы должны ознакомиться с использованием документации Android SDK. Чтобы узнать о том. Как программировать приложения Android в Oxygene для Java.

Примечания

Одна важная вещь. Которую следует помнить для Android. Когда вы начинаете создавать более крупные проекты и использовать дополнительные библиотеки. Заключается в том. Что если вы не установите свойство “Копировать локально” в true для ссылочной библиотеки. Компилятор предполагает. Что библиотека доступна в системе и не включает ее в сгенерированный архив. Если вы установите его. Он станет частью приложения. Для основной библиотеки платформы, такой как android-14, “Copy Local” должен быть оставлен как false. Но для всех других библиотек он должен быть установлен в true. Чтобы гарантировать. Что ссылочный код будет доступен при запуске приложения на устройстве Android.