Как создать свой android

Как создать мобильное приложение в Android Studio

Android Studio — интегрированная среда разработки (IDE) на базе IntelliJ IDEA, которую Google называет официальной IDE для приложений Android.

В этом руководстве описана разработка приложений для android:

  • Навигация между файлами с помощью проводника
  • Установка файла AndroidManifest.xml
  • Gradle
  • Импорт файлов в проект
  • Расширенный редактор макетов с функцией динамического превью
  • Использование Logcat и Android Monitor для отладки приложений

Начало работы в Android Studio

Запустите Android Studio, в окне Android Studio Setup Wizard выберите Start a new Android Studio project (начать новый проект).

В окне Create New Project выберите Application Name (название приложения) как Fortune ball («Шар фортуны»), введите домен компании; в поле Project location выберите место в котором приложение будет сохранено. Кликните Next.

Перед вами окно Target Android Devices. Выберите Phone and Tablet. В поле Minimum SDK укажите API 15. Нажмите Next.

В окне Add an activity to Mobile выберите Basic Activity. Оцените все опции, в этом окне представлен обзор доступных макетов.

Кликните Next.

В окне Customize the Activity, скриншот которого размещен ниже, вы сможете изменить Activity Name (название активности), Layout Name (название макета), Title (общее название) и Menu Resource Name (название меню ресурсов). Оставьте значения по умолчанию и кликните Finish.

Через несколько секунд появится следующее окно:

На вашем устройстве или эмуляторе высветится такое же окно. Эмулятор функционирует как устройство, загрузка займет определенное время.

Это уже приложение. Ему многого не хватает, но сейчас уже можно переходить к следующему шагу.

Структура проекта и файла

Окно показывает файлы проекта.

В выпадающем меню (скриншот ниже) есть несколько фильтров для файлов. Основные — Project и Android.

Фильтр Project покажет все модули приложения — в каждом проекте присутствует как минимум один модуль. Среди модулей других типов есть модули из библиотек сторонних разработчиков, или модули других приложений Android (такие как приложения для Android Wear, Android TV). У каждого из модулей имеется свой набор характеристик, в т. ч. файл gradle, ресурсы и исходные файлы (java-файлы).

Примечание. Если проект не открыт, кликните вкладку Project на левой стороне панели, как показано на скриншоте. По умолчанию установлен фильтр Android, который группирует файлы по определенному типу. На верхнем уровне вы увидите следующие папки:

  • manifests
  • java
  • res
  • Gradle Scripts

В последующих разделах подробно описаны все эти папки, начиная с manifests.

Обзор AndroidManifest.xml

У каждого приложения под Android есть файл AndroidManifest.xml, который находится в папке manifests. Этот XML-файл сообщает вашей системе о требованиях приложения. Присутствие этого файла обязательно, т. к. именно он позволяет системе Android создать приложение.

Откройте папку manifests и AndroidManifest.xml. Двойной клик откроет файл.

Теги manifest и application нужны для manifest, появляются только один раз.

Каждый тег также определяет набор атрибутов, наряду с названием элемента. К примеру, некоторые атрибуты в application могут быть такими:

android:icon, android:label и android:theme

Среди прочего в manifest может появиться:

  • uses-permission: запрашивает специальное разрешение, которое выдается приложению для корректной работы. К примеру, приложение должно запрашивать разрешение у пользователя, чтобы получить доступ к сети — в случае, если вы добавите разрешение android.permission.INTERNET.
  • activity: сообщает об активности, которая частично отвечает за визуальный UI и логику. Любая активность, которая предусмотрена в приложении, должна добавляться в manifest — неотмеченную активность система не заметит, и она не будет отображаться в приложении.
  • service: добавляет сервис, который вы собираетесь использовать, чтобы реализовать продолжительные операции или расширенные коммуникации API с другими приложениями. Примером в данном случае может служить сетевой вызов, с помощью которого приложение получает данные. В отличие от активностей, у сервисов нет пользовательских интерфейсов.
  • receiver: благодаря приемнику широковещательных сообщений приложение получает сигналы о системных сообщениях или сообщениях других приложений, даже когда другие компоненты приложения не запущены. Пример такой ситуации — батарея с низким уровнем заряда и уведомление об этом операционной системы.

Полный список тегов можно найти в manifest-файле на сайте Android Developer.

Настройки файла Manifest

В activity добавьте следующий атрибут:

android:screenOrientation=”portrait”. чтобы ограничить экран только портретным режимом. Если этого не сделать, экран, в зависимости от расположения устройства, будет либо в ландшафтном, либо в портретном режиме. После добавления атрибута файл manifest будет выглядеть как на скриншоте.

Создайте и запустите приложение. Если вы тестируете на своем устройстве, переверните его, удостоверьтесь, что экран не перемещается в ландшафтный режим, если вы ограничили эту возможность в файле AndroidManifest.

Обзор Gradle

Перейдем к Gradle. Gradle превращает Android-проект в инсталируемый APK, который можно устанавливать на устройства. Файл build.gradle присутствует в Gradle scripts, на двух уровнях: модульном и проектном.

Откройте файл build.gradle (Module:app). Вы увидите установку gradle по умолчанию:

apply plugin: ‘com.android.application’ android {compileSdkVersion 25buildToolsVersion «25.0.2»defaultConfig {applicationId «com.raywenderlich.fortuneball»minSdkVersion 15targetSdkVersion 25versionCode 1versionName «1.0»testInstrumentationRunner «android.support.test.runner.AndroidJUnitRunner»}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’}}} dependencies {compile fileTree(dir: ‘libs’, include: )androidTestCompile(‘com.android.support.test.espresso:espresso-core:2.2.2’, {exclude group: ‘com.android.support’, module: ‘support-annotations’})compile ‘com.android.support:appcompat-v7:25.1.0’compile ‘com.android.support:design:25.1.0’testCompile ‘junit:junit:4.12’}

Разберем основные компоненты:

  • apply plugin: ‘com.android.application’ применяет плагин Android на родительском уровне и обеспечивает доступность задач верхнего уровня, которые нужны для создания приложения.
  • Рядом с разделом android{…} находятся опции настроек, такие как targetSdkVersion. Целевой SDK для вашего приложения должен располагаться на новейшем уровне API. Еще один важный компонент — minSDKVersion (определяет минимальную версию SDK, которая должна быть установлена на устройстве, чтобы приложение можно было запустить). К примеру, если версия SDK 14, тогда приложение будет невозможно запустить на этом устройстве, поскольку в данном конкретном случае минимальная поддерживаемая версия 15.
  • Последний компонент — dependencies{…}. Необходимо отметить compile ‘com.android.support:appcompat-v7:VERSION’ и compile ‘com.android.support:design:VERSION’. Они обеспечивают поддержку и совместимость особенностей новых и старых API.

Кроме библиотек совместимости Android, вы можете добавить библиотеки сторонних разработчиков в компонент dependencies{…} Библиотека анимаций, например, содержит эффекты пользовательского интерфейса. Найдите dependencies, затем добавьте вниз две следующие линии:

dependencies { … compile ‘com.daimajia.easing:library:2.0@aar’compile ‘com.daimajia.androidanimations:library:2.2@aar’}

Здесь можно добавить dependencies сторонних разработчиков. Библиотеки автоматически загружаются и интегрируются в Android Studio. Кликните Sync Now, чтобы интегрировать эти зависимости в свое приложение.

Синхронизация длится несколько секунд. Обновления Gradle появляются во вкладке Messages нижней панели.

Это все настройки, которые вам пока будут нужны в Gradle. Такие манипуляции добавят анимацию в приложении.

Импорт файлов

В разработке приложения под Android важна интеграция с другими ресурсами: изображения, кастомные шрифты, звуки, видео и пр. Эти ресурсы импортируются в Android Studio и помещаются в соответствующие папки, что позволяет операционной системе подбирать корректные ресурсы для приложения. Для нашего приложения Fortune Ball понадобится импорт изображений в папки drawable. В этих папках могут содержаться изображения или специальные файлы XML drawables (т. е. вы можете рисовать формы с помощью XML-кода и использовать их в своих макетах).

Скачайте изображения по ссылке, затем распакуйте компоненты и поместите в удобное место.

В Android Studio перейдите из Android в Project

Откройте папку res (app > src > main). Клик правой кнопки мыши по папке res, выберите New > Android resource directory.

Появится окно под названием New Resource Directory.

Из выпадающего списка Resource type выберите опцию drawable. В списке Available qualifiers выберите Density, затем кликните кнопку, которая выделена на скриншоте.

В следующем окне выберите XX-High Density из списка Density. Кликните OK.

Повторите все, чтобы создать папки drawable-xhdpi, drawable-hdpi и drawable-mdpi. Выберите X-High, high (высокую) и medium (среднюю) плотность соответственно из списка Density.

Каждая папка, у которой есть определитель плотности (i.e. xxhdpi, xhdpi, hdpi), содержит изображения, которые соотносятся с определенной плотностью или разрешением. К примеру, папка drawable-xxhdpi содержит изображение высокой плотности, это означает, что Android-устройство с экраном высокого разрешения извлечет изображение из этой папки. Изображение будет хорошо смотреться на всех устройствах Android, независимо от качества экрана. Больше информации о плотности экранов содержится в документации Android.

Создав все «рисованные» папки, вы можете вернуться к нераспакованному контенту в папке и скопировать (cmd + C) изображение из каждой папки и поместить (cmd + V) в соответствующую папку Android Studio.

Поместив файлы, вы увидите окно Copy. Выберите OK.

XML View и Dynamic Layout Previews

Создание макета, с которым пользователи могут взаимодействовать, — важная часть процесса. В Android Studio это можно сделать в редакторе макета. Откройте content_main.xml из res/layout. Во вкладке Design вы можете переносить элементы интерфейса (кнопки, текстовые поля).

Справа от Design есть вкладка Text, которая позволяет редактировать XML непосредственно в макете.

Перед созданием внешнего вида, необходимо определить некоторые значения. Откройте strings.xml во вкладке res/values и добавьте следующее:

<string name=»fortune_description»>Suggest the question, which you can answer “yes” or “no”, then click on the magic ball.</string>

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

Откройте dimens.xml в res/values и добавьте следующее:

<dimen name=»description_text_size»>15sp</dimen><dimen name=»fortune_text_size»>20sp</dimen>

dimens.xml содержит размерные величины, предельные интервалы для макетов, размера текста и пр. Рекомендуется сохранять эти данные в файле, чтобы их можно было использовать для создания макетов в дальнейшем.

Вернитесь в content_main.xml и замените все содержимое файла следующим кодом:

<?xml version=»1.0″ encoding=»utf-8″?><RelativeLayoutxmlns:android=»http://schemas.android.com/apk/res/android»xmlns:tools=»http://schemas.android.com/tools»xmlns:app=»http://schemas.android.com/apk/res-auto»android:layout_width=»match_parent»android:layout_height=»match_parent»app:layout_behavior=»@string/appbar_scrolling_view_behavior»tools:showIn=»@layout/activity_main»tools:context=».MainActivity»> <TextViewandroid:id=»@+id/descriptionText»android:layout_width=»match_parent»android:layout_height=»wrap_content»android:text=»@string/fortune_description»android:gravity=»center»android:textSize=»@dimen/description_text_size»/> <ImageViewandroid:layout_width=»wrap_content»android:layout_height=»wrap_content»android:id=»@+id/fortunateImage»android:src=»@drawable/img_crystal»android:layout_centerHorizontal=»true»android:layout_below=»@id/descriptionText»android:layout_marginTop=»10dp»/> <TextViewandroid:id=»@+id/fortuneText»android:layout_width=»match_parent»android:layout_height=»wrap_content»android:layout_below=»@id/fortunateImage»android:gravity=»center»android:layout_marginTop=»20dp»android:textSize=»@dimen/fortune_text_size»android:textStyle=»bold»android:textColor=»@android:color/holo_red_dark»/> <Buttonandroid:id=»@+id/fortuneButton»android:layout_width=»match_parent»android:layout_height=»50dp»android:layout_below=»@id/fortuneText»android:text=»What’s my fortune?»android:layout_centerHorizontal=»true»android:layout_marginTop=»10dp»/> </RelativeLayout>

Этот довольно большой код создает макет приложения под названием FortuneBall. На верхнем уровне вы добавили RelativeLayout (относительная разметка определяет позицию дочерних компонентов относительно родительского компонента). RelativeLayout можно растянуть, подогнать под размер родительского компонента.

В относительной разметке добавляются две части текста, изображение и кнопка. Все эти детали будут видны в порядке добавления. Их содержимое можно будет прочитать в strings.xml (текст) и в drawable (изображения).

Обновляя content_main.xml, обратите внимание на окно Preview обновляет UI:

Примечание: если не видно окно предпросмотра, во вкладке Text кликните на кнопку Preview на панели редактора разметки справа.

Создайте и запустите.

И вот вы создали макет приложения. Но на данном этапе это только красивое изображение — клик по кнопке ни к чему не приведет.

Объединяем Activity и View

Вы можете использовать java-файлы, размещенные в app / src / main / java чтобы установить логические связи в приложении.

Откройте MainActivity.java и добавьте эти данные под уже существующие:

import java.util.Random;import android.view.View;import android.widget.Button;import android.widget.ImageView;import android.widget.TextView; import com.daimajia.androidanimations.library.Techniques;import com.daimajia.androidanimations.library.YoYo;

Первые пять импортов указывают на соответствующие классы в вашем коде: Random, View, Button, ImageView и TextView. Следующие два импорта указывают на то, что вы будете использовать два класса из библиотек, в т.ч. build.gradle для анимаций. В MainActivity.java в класс MainActivity добавьте:

String fortuneList = {«Don’t count on it»,»Ask again later»,»You may rely on it»,»Without a doubt»,»Outlook not so good»,»It’s decidedly so»,»Signs point to yes»,»Yes definitely»,»Yes»,»My sources say NO»}; TextView mFortuneText;Button mGenerateFortuneButton;ImageView mFortuneBallImage;

В этом небольшом отрезке кода вы установили 4 переменных для активности. Первая — строки, которые определяют возможные состояния, другие три — элементы UI, которые вы создали в макете/разметке.

Теперь замените содержимое метода onCreate() следующими данными:

// 1:super.onCreate(savedInstanceState);// 2:setContentView(R.layout.activity_main);Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);setSupportActionBar(toolbar);// 3:mFortuneText = (TextView) findViewById(R.id.fortuneText);mFortuneBallImage = (ImageView) findViewById(R.id.fortunateImage);mGenerateFortuneButton = (Button) findViewById(R.id.fortuneButton); // 4:mGenerateFortuneButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {// 5:int index = new Random().nextInt(fortuneList.length);mFortuneText.setText(fortuneList);// 6:YoYo.with(Techniques.Swing).duration(500).playOn(mFortuneBallImage);}});

  • Проверьте, что активность готова (реализация суперкласса).
  • Укажите, что макет для данной активности представлен макетом, который вы создали ранее, проверьте панель инструментов.
  • Заполните значения трех переменных, которые вы создали прежде в компонентах views макета с помощью метода findViewById. Значение id то же, что и в макете XML.
  • Добавьте OnClickListener на кнопке. Это простой класс, который инкапсулирует (упаковывает) функциональность, которую, в свою очередь, вызывает нажатие кнопки.
  • Выберите произвольный вариант из набора fortuneList для данного приложения, и обновите текст fortune text, чтобы это показать.
  • Используйте библиотеку сторонних разработчиков, чтобы добавить зависимость в файл gradle, и таким образом добавить анимацию в приложение.

Уже почти готово. Но нужно убрать плавающую кнопку. Перейдите в res / layout и откройте activity_main.xml.

В этом файле макета содержится ссылка на content_main.xml, который вы прежде редактировали. Он по умолчанию определяет контент (тулбар и плавающая кнопка действия). Однако в данном конкретном приложении (Fortune Ball) плавающая кнопка не нужна. Поэтому уберите следующий блок кода из xml-файла:

Теперь в правом нижнем углу нет плавающей кнопки.

Задайте вопрос (What’s my fortune?) — нажмите кнопку. Проверьте работу приложения.

Android Monitor

В Android Studio содержится широкое множество инструментов. Откройте вкладку Android Monitor в нижней части окна Android Studio.

Здесь вы найдете множество опций для разработчика.

  • Камера и кнопка play слева позволяют делать скриншоты и записывать видео.
  • Увеличительное стекло открывает ряд дополнительных опций, например анализ памяти приложения.
  • Layout Inspector предоставляет визуальный интерфейс, который определяет, почему интерфейс приложения выглядит определенным образом.

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

Проверьте, что вы выбрали Show only selected application в правом верхнем углу, как было показано на скриншоте выше. Теперь будут видны только сообщения вашего приложения.

В MainActivity.java добавьте к списку импортов следующее:

import android.util.Log;

В конце onCreate() в MainActivity.java добавьте следующую линию:

Log.v(«FORTUNE APP TAG»,»onCreateCalled»);

Log.v вызывает два параметра — тег и сообщение. В данном случае тег определен как “FORTUNE APP TAG”, а сообщение как “onCreateCalled”.

Запустите приложение, чтобы видеть сообщение лога на панели Logcat.

Отфильтруйте содержимое LogCat, впишите onCreateCalled в поисковую строку над консолью:

Затем удалите поисковый текст, чтобы увидеть снова все сообщения лога.

Еще одна полезная функция — logcat, это возможность просматривать сообщения об ошибке. Добавьте баг в свое вполне функциональное приложение, чтобы посмотреть, как все устроено.

Перейдите к MainActivity.java и измените следующую линию в onCreate():

//mFortuneText = (TextView) findViewById(R.id.fortuneText);

Запустите приложение. Кликните кнопку What’s My Fortune? Не работает!

Как бы вы исправили ошибку, если бы не знали о наличии бага? В этом поможет Logcat.

Перейдите к панели Logcat — она выглядит примерно так:

Здесь много красного текста. В данном случае проблема в линии 50 в файле MainActivity.java. LogCat превратил эту ссылку в гиперссылку синего цвета. Если ее нажать, можно узнать, в чем проблема.

Изменив mFortuneText = (TextView) findViewById(R.id.fortuneText), вы тем самым создали переменную, но не указали ее значение — отсюда исключение нулевого указателя. Вернитесь обратно и измените код, запустите приложение. В этот раз все работает гладко. Logcat — полезный инструмент для поиска ошибок.

Как переименовать пакет в Android Studio

Например, если вы хотите изменить com.example.app на my.awesome.game, то:

  1. На панели вашего проекта нажмите на маленький значок шестеренки ()Снимите/снимите флажок Compact Empty Middle Packages

  1. Ваш каталог пакетов теперь будет разбит на отдельные каталоги
  2. Индивидуально выберите каждый каталог, который вы хотите переименовать, и:
    • Щелкните правой кнопкой мыши
    • Выберите Refactor
    • Нажмите на Rename
    • Во всплывающем диалоговом окне нажмите » Rename Package вместо «Переименовать каталог».
    • Введите новое имя и нажмите Refactor
    • Нажмите Do Refactor в нижней части
    • Подождите, пока Android Studio обновит все изменения
    • Примечание. При переименовании com в Android Studio может появиться предупреждение. В таком случае выберите Rename All

  1. Теперь откройте файл сборки Gradle (build.gradle — обычно app или mobile). Обновите applicationId в defaultConfig новое имя пакета и Grad Gradle, если оно еще не было обновлено автоматически:

  1. Также вам нужно изменить атрибут package= в файле AndroidManifest.xml.
  2. Выполните команду Build-> Clean Project, затем Rebuild Project
  3. Готово!

Да да, вы не ослышались и все это возможно сделать при помощи простой как нокия 3310 программы Android App Book Maker! Как же долго я ее искал..

Android App Book Maker — Приложение позволит в наименьшие сроки делать полноценные книги — приложения для нашего Андроида. Создавать книгу имея это приложение под рукой — дело 3 минут! Можно добавить изображение, импортировать текстовый файл, настроить шрифт и анимации в нашей программе. Поддерживаются все оперативные системы Windows для установок.
Книги, деланные данным приложением, работают на любых Анлроид устройствах.

Краткое описание:
Программа предназначенная для легкого создания книг для вашего Андроид.

Описание:
Программа позволяет в кратчайшие сроки сделать полноценную книгу-приложение для вашего Андроидфона. Создать книгу имея эту программу под рукой — дело двух минут!
Возможно добавлять изображения, импортировать текстовые файлы, настраивать шрифт и анимацию в вашем приложении…. Одним словом кул 😀
Поддерживает все семейства ос windows для установки.

Возможности:
-Простой интерфейс
-Возможность импорта текстовых файлов
-Вставка картинок
-Оформление книги своей иконкой и обложкой
-Подпись файла прямо из программы

Она выложена на 4pda уже с кряком.

P.S : В архиве с прогой и лекарством в качестве бонуса добавил иконки в виде книжек.
P.P.S : В маркете — 60 процентов книжек платных и бесплатных сделаны этой самой программой.

В чем соль:

А соль в том что теперь вы можете выпускать свои собственные книги-приложения и распространять их через Google Play и самое приятно что для этого вам не нужно разбираться в программировании, ведь с такой красотой не надо ничего знать!..

Существует много историй, когда разработчик создавал свое мобильное приложение, загружал его на Google Play или App Store и становился миллионером. Если Вы не программист, но у вас есть идеи, — Вы можете попробовать самостоятельно создать мобильное приложение с помощью онлайн сервисов. Вы можете выбрать универсальных сервис или конструктор, заточенный для создания приложений определенного типа. Знания программирования при работе в таких сервисах не требуется. Но все-таки заплатить придется. Как правило, использование более менее качественных онлайн сервисов стоит от в среднем от 5 до 50 уе. ITmentor сделал подборку 13 онлайн сервисов для создания своего мобильного приложения.

изображение startupbeat.com

AppsGeyser предлагает своим пользователям бесплатно создавать мобильные приложения для Android на базе любого существующего контента. Для того, чтобы получить готовое приложение, пользователю достаточно указать ссылку на сайт, вставить HTML код или загрузить документ. Полученное приложение можно размещать в Android Market и даже зарабатывать на нем, продавая его или размещая в приложениях рекламу.

Сервис для создания различных приложений для платформ iOS и Android. Есть возможность создавать бесплатные приложения. Создание приложения бесплатно, а за 5 у.е. в месяц можно отключить показ посторонней рекламы в созданном приложении.

Appsmakerstore — это онлайн-сервис, который позволяет пользователям создавать и публиковать свои собственные мобильные приложения в несколько кликов в интернете без каких-либо глубоких технологических навыков. Appsmakerstore предлагается в 23 языках, в том числе на русском. Стоимость использования от $10 в месяц.

Конструктор мобильных приложений для Android и iOS. Клиенты могут создать собственные каталоги, флаеры, брошюры, отчеты, резюме и пр. и предоставлять их с помощью SaaS-решения. Есть английская и русская версии. Стоимость использования от $35 в месяц.

ViziApps — конструктор приложений для компаний. Одна из главных особенностей — поддержка множества разных источников данных (включая таблицы Google, SalesForce, QuickBase или SQL базы данных), которые обычно используются в компаниях. На выходе вы получаете нативные приложения для веб, Android или iOS. Стоимость использования от $33 в месяц.

AppsBuilder — инструмент для самостоятельной разработки мобильных приложений, который не требует навыков программирования. Итальянская компания анонсировала последнюю версию конструктора, переведенную на 5 языков. Стоимость использования от $60 в месяц.

AppMakr — платформа создания приложений на основе HTML5. Основной функционал предлагается бесплатно, за дополнительные функции и кастомизацию уже надо будет платить. Стоимость использования от $2 в месяц.

BuildFire — онлайн-сервис для создания собственных приложений для ;iPhone, Android, Windows Phone. Особенность данного онлайн-сервиса в том, что создание приложений совершенно бесплатно, плата берется когда приложение публикуется в каталогах и составляет $49 ежемесячно.

Biznessapps является простым и доступным решением для предприятий по созданию и управлению приложениями для iPhone, iPad, Android. В течение 30 дней вы можете отказаться от использования конструктора и получить потраченные средства назад. Стоимость использования от $39 в месяц.

Для создания своего приложения пользователи могут выбирать элементы из множества различных шаблонов — от навигационных панелей и форм, до коммерческих элементов вроде звонков и СМС и контента вроде Google Maps. А выпадающие меню позволяют вводить дополнительные функции для каждого элемента приложения. Базовая функциональность сервиса доступна бесплатно.

Бесплатный сервис для создания приложений. Вы можете создавать программы для Android и iOS с простой функциональностью.

С помощью этого сервиса можно разрабатывать Android- и iOS-приложения. Стоимость использования от $16 в месяц.

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

Созданные в конструкторе приложения можно опубликовать в Google Play и App Store, их можно монетизировать с помощью рекламы или платных установок. Однако, не стоит переоценивать предложенные сервисы. Такие сервисы больше подходят для создания приложения для разного вида бизнеса, для того чтобы расширить целевую аудиторию и привлечь клиентов. С помощью предложенных сервисов действительно можно создавать работоспособные функциональные приложения, однако их недостатком остается шаблонность, простота дизайна и ограниченный функционал. Решайте, что лучше — один раз оплатить работу разработчиков или много лет платить владельцам конструктора за приложение средней функциональности?

Пишем справочник про котов

Котаны, читайте на здоровье!

×

Статья проплачена кошками — всемирно известными производителями котят.

Если статья вам понравилась, то можете поддержать проект.

Закрыть

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

Что мы узнаем:

  • Как сделать простой список из массива, используя ListView
  • Как загрузить текст из ресурсов
  • Как загрузить html-текст в WebView
  • Как передать данные из одной активности в другую

Пример морально устарел. Теперь уже не используют ListView и отдельные активности для разделов. Вместо них следует использовать RecyclerView и фрагменты. Но для общего развития всё-равно полезно изучить пример.

Создаём новый проект Manual (не путать с манулом). Начнём с интерфейса программы. Программа будет состоять из двух активностей. В первой выводится список тем, а во второй — полное описание выбранной темы. Откроем разметку первой активности res/layout/activity_main.xml и добавим компонент ListView для отображения списка тем:

<?xml version=»1.0″ encoding=»utf-8″?> <LinearLayout xmlns:android=»http://schemas.android.com/apk/res/android» xmlns:tools=»http://schemas.android.com/tools» android:layout_width=»match_parent» android:layout_height=»match_parent» android:orientation=»vertical» tools:context=».MainActivity»> <ListView android:id=»@+id/listView» android:layout_width=»wrap_content» android:layout_height=»match_parent» /> </LinearLayout>

Сразу же создадим вторую активность DetailActivity (правой кнопкой мыши по имени пакета и выбираем New | Activity | Empty Activity). Создадим разметку для второй активности в файле res/layout/activity_detail.xml. Сюда мы добавим только компонент WebView. Скрытие строки состояния и заголовка сделаем в Java-коде.

<?xml version=»1.0″ encoding=»utf-8″?> <LinearLayout xmlns:android=»http://schemas.android.com/apk/res/android» android:orientation=»vertical» android:layout_width=»match_parent» android:layout_height=»match_parent»> <WebView android:id=»@+id/webView» android:layout_width=»match_parent» android:layout_height=»match_parent» /> </LinearLayout>

Дизайн приложения готов. Осталось написать код. Открываем файл класса MainActivity. В нём программно создадим список заголовков тем справочника и через адаптер добавим в список. Когда пользователь выбирает элемент списка, то получаем позицию выбранного элемента и запоминаем его. А затем запускаем вторую активность, в которую передаём номер позиции. Мы проходили подобные вещи раньше, поэтому просто освежите свою память.

package ru.alexanderklimov.manual; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; public class MainActivity extends AppCompatActivity { //Создаем массив разделов: private String titles = { «00. Начало», «01. Чем кормить кота.», «02. Как гладить кота.», «03. Как спит кот.», «04. Как играть с котом.», «05. Как разговаривать с котом», «06. Интересные факты из жизни котов.», «07. Как назвать кота.», }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Получим идентификатор ListView ListView listView = findViewById(R.id.listView); //устанавливаем массив в ListView listView.setAdapter( new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, titles)); listView.setTextFilterEnabled(true); //Обрабатываем щелчки на элементах ListView: listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView<?> a, View v, int position, long id) { Intent intent = new Intent(); intent.setClass(MainActivity.this, DetailActivity.class); intent.putExtra(«title», position); //запускаем вторую активность startActivity(intent); } }); } }

Вторая активность

Запустив пример, вы можете щёлкнуть по любому элементу списка, чтобы открыть вторую активность. Сейчас вторая активность пуста, так как мы не написали никакого кода. Но при этом она получает номер позиции выбранного элемента через метод putExtra(). В зависимости от полученного номера мы формируем содержание веб-страницы.

Для справочника удобнее держать заранее подготовленные локальные файлы, чтобы не зависеть от интернета. Создадим новую папку — выбираем res | New | Directory и в диалоговом окне вводим имя папки raw.

Самостоятельно подготовьте текстовые файлы с именами n0.txt, n1.txt, n2.txt и т.д. Символ n в начале имён файлов понадобился, чтобы избежать конфликта. Файлы ресурсов не должные начинаться на цифру.

Напишем код для второй активности. Во-первых, получим номер позиции, которую нам прислала первая активность. Во-вторых, открываем нужный файл для чтения и помещаем его содержимое в WebView.

package ru.alexanderklimov.manual; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.webkit.WebView; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; public class DetailActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_detail); WebView webView = findViewById(R.id.webView); Intent intent = getIntent(); //получаем строку и формируем имя ресурса String resName = «n» + intent.getIntExtra(«title», 0); Log.i(«name», resName); Context context = getBaseContext(); //получаем контекст //читаем текстовый файл из ресурсов по имени String text = readRawTextFile(context, getResources().getIdentifier(resName, «raw», «ru.alexanderklimov.manual»)); webView.loadDataWithBaseURL(null, text, «text/html», «en_US», null); } //читаем текст из raw-ресурсов private String readRawTextFile(Context context, int resId) { InputStream inputStream = context.getResources().openRawResource(resId); InputStreamReader inputReader = new InputStreamReader(inputStream); BufferedReader buffReader = new BufferedReader(inputReader); String line; StringBuilder builder = new StringBuilder(); try { while (( line = buffReader.readLine()) != null) { builder.append(line); builder.append(«\n»); } } catch (IOException e) { return null; } return builder.toString(); } }

Теперь можно запустить проект и убедиться, что все работает.

Эту программу также можно скачать в Google Play.

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

В примере показаны базовые функции, достаточные для понимания. Вы можете усложнить пример, добавив поддержку фрагментов. Также вы можете самостоятельно доработать пример. Например, добавить картинки к элементам списка, загружать готовые html-документы, а также загружать веб-страницы из интернета.

Дополнительное чтение