Android studio создание справочника

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

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

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

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

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

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

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

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

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

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

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

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

Запускаем проект и проверяем, что всё работает.

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

Источник

Как сделать приложение для Android самостоятельно

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

Язык программирования для мобильной разработки на Android очень простой — это Java. Сейчас Google активно продвигает Kotlin как язык, который сможет заменить Java. Приложения пишут и на C++.

Создание простейшего приложения состоит из нескольких этапов:

  • проект в Android Studio;
  • создание пользовательского интерфейса;
  • добавление активностей, навигации и действий;
  • тест-драйв приложения в эмуляторе.

А пока мы описываем азы, студенты курса «Профессия Мобильный разработчик» уже получают деньги за свои приложения.

Пишет про разработку в Skillbox. Работал главным редактором сайта «Хабрахабр», ведет корпоративные блоги.

Необходимые инструменты

Первым делом установите программу Android Studio. Это официальная среда разработки (IDE) для Android, она работает на Windows, macOS и Linux. Хотя при разработке программ для Android можно использовать и другие среды, кроме Android Studio.

Читайте также:  Внешняя клавиатур для планшета android

Если на компьютере не установлены Android SDK и другие компоненты, то Android Studio автоматически скачает их. Android SDK — это среда программирования, в которую входят библиотеки, исполняемые файлы, скрипты, документация и т.д.

Android SDK компилирует код вместе с любыми данными и ресурсами в файл с расширением .apk. Он содержит всё необходимое для установки приложения на Android-устройство.

Полезно установить и эмулятор Android, чтобы запускать и тестировать приложения. Эмулятор поставляется в комплекте с Android Studio.

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

Из чего состоит приложение
на Android

Android-приложение состоит из четырёх компонентов. Каждый компонент — это точка входа, через которую система или пользователь может получить доступ.

  1. Активность (activity) — элементы интерактивного пользовательского интерфейса.
    Одна активность задействует другую и передаёт информацию о том, что намерен делать пользователь, через класс Intent (намерения). Активности подобны веб-страницам, а намерения — ссылкам между ними. Запуск приложения — это активность Main.
  2. Сервис (service) — универсальная точка входа для поддержания работы приложения в фоновом режиме.
    Этот компонент выполняет длительные операции или работу для удалённых процессов без визуального интерфейса.
  3. Широковещательный приемник (broadcast receiver) транслирует нескольким участникам намерения из приложения.
  • Поставщик содержимого(content provider) управляет общим набором данных приложения из файловой системы, базы данных SQLite, интернета или другого хранилища.
  • Теперь попробуем сделать своё приложение для Android.

    Создаём Android-приложение
    в Android Studio

    Шаг 1

    Выбираем название приложения, домен компании, путь к проекту и название пакета. Указываем, включить ли поддержку опциональных языков программирования C++ и Kotlin.

    Шаг 2

    Задаём одну или несколько целевых платформ для сборки. Для этого используется SDK и AVD, менеджер виртуальных устройств Android. Инструмент позволяет устанавливать в SDK пакеты, которые поддерживают несколько версий ОС Android и несколько уровней API (интерфейсов программирования приложений).

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

    Шаг 3

    Выбираем основную активность, которая будет запускаться при нажатии на иконку приложения, и даём ей имя.

    Шаг 4

    После нескольких минут сборки Android Studio открывает интерфейс IDE. Здесь три основных момента.

    Источник

    Пишем справочник по математике под Android, подключаем рекламу Begun

    Небольшое вступление

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

    Структура приложения

    О создании приложения такого плана на Хабре уже писали в посте Пишем шпаргалку на Android. Разумеется есть некоторые отличия. Первое и главное из них в том, что в нашем приложении нужно будет сделать чуть побольше Activity, второе — добавление в приложение социальных возможностей, таких как отправить письмо разработчику и самостоятельно поучаствовать в создании приложения любому желающему, также добавим в приложение меню опций и несколько диалоговых окон, ну и собственно подключим к нему рекламу Begun, чтобы хоть как-то оправдать затраты на приобретение аккаунта разработчика на маркете.

    Activity
    MainActivity

    При запуске приложения пользователь будет видеть экран MainActivity:

    Он содержит три кнопки, при нажатии на которые осуществляется переход на MatanActivity, GeomActivity, или TerverActivity, содержащие в своих файлах-разметки элементы ListView, представляющие набор соответствующих тем по нужному предмету. Подробный код MainActivity представлен ниже:

    public class MainActivity extends Activity <
    AdView ad ;
    //Объявление идентификатора диалогового окна HELP и диалогового окна Exit
    static final int EXIT_DIALOG = 0 ;
    static final int HELP_DIALOG = 1 ;

    //Вызов меню опций с одной кнопкой About
    Override
    public boolean onCreateOptionsMenu ( Menu menu ) <
    MenuInflater inflater = getMenuInflater ( ) ;
    inflater. inflate ( R. menu . gameoptions , menu ) ;
    menu. findItem ( R. id . about_menu_item ) ;
    menu. findItem ( R. id . btn_email ) ;
    return true ;
    >
    //обработка нажатий на эл-ты меню опций
    //Вызов диалога HELP из меню опций при нажатии на «О приложении» и переход на EmailActivity при нажатии на «свяжитесь с нами»
    Override
    public boolean onOptionsItemSelected ( MenuItem item ) <
    switch ( item. getItemId ( ) ) <
    case R. id . about_menu_item :
    showDialog ( HELP_DIALOG ) ;
    return true ;
    case R. id . btn_email :
    startActivity ( new Intent ( getApplicationContext ( ) ,EmailActivity. class ) ) ;
    return true ;
    default :
    return super . onOptionsItemSelected ( item ) ;
    >
    >

    Читайте также:  Mini pc android smart tv box mxq

    /** Called when the activity is first created. */
    Override
    protected void onCreate ( Bundle savedInstanceState ) <
    super . onCreate ( savedInstanceState ) ;
    requestWindowFeature ( Window . FEATURE_NO_TITLE ) ; //скрываем заголовок
    setContentView ( R. layout . second ) ;

    //подключение рекламы
    // Получаем вид
    ad = ( AdView ) findViewById ( R. id . ad ) ;
    ad. onDebug = true ;
    // Устанавливаем слушатели событий
    // callback — слушатель, благодаря которому можно получить информацию
    // о событиях в библиотеке. Пока доступны следующие листенеры: AdLoaded, AdClickThru
    // и AdStopped. Для инициализации необходимо передать параметр environmentVars,
    // который содержит информацию о зарегистрированной площадке в системе
    // (BEGUN_PAD_ID, BEGUN_BLOCK_ID).
    // Для начала инициализации необходимо вызвать метод ad.init. Затем дождаться
    // callback со статусом adLoaded и только после этого вызвать метод
    // ad.api(«initAd»,al);
    ad. setOnApiListener ( new Callback ( ) <
    Override
    public void init ( ) <
    Log. d ( «BEGUN_AD» , «ad.api|initAd» ) ;
    ArrayList RequestParam > al = new ArrayList RequestParam > ( ) ;
    RequestParam rp = new RequestParam ( ) ;
    rp. name = «environmentVars» ;
    rp. value = «pad_id:261629112|block_id:261629500» ;
    al. add ( rp ) ;
    ad. api ( «initAd» , al ) ;
    Log. d ( «BEGUN_AD» , «CALLBACK params: » + al. toString ( ) ) ;
    >
    Override
    public void callback ( String c ) <
    Log. d ( «BEGUN_AD» , «CALLBACK API : » + c ) ;
    if ( c. equals ( «AdLoaded» ) ) <
    Log. d ( «BEGUN_AD» , «startAd » + c ) ;
    ad. api ( «startAd» ) ;
    >
    >
    > ) ;
    Log. d ( «BEGUN_AD» , «ad.init» ) ;
    ad. init ( ) ;

    //Запуск MatanActivity
    Button b = ( Button ) this . findViewById ( R. id . btn_mathan ) ;
    b. setOnClickListener ( new OnClickListener ( ) <
    public void onClick ( View arg0 ) <
    startActivity ( new Intent ( getApplicationContext ( ) ,MatanActivity. class ) ) ;
    >
    > ) ;

    //Запуск GeomActivity
    Button d = ( Button ) this . findViewById ( R. id . btn_geom ) ;
    d. setOnClickListener ( new OnClickListener ( ) <
    public void onClick ( View arg0 ) <
    startActivity ( new Intent ( getApplicationContext ( ) ,GeomActivity. class ) ) ;
    >
    > ) ;

    Button c = ( Button ) this . findViewById ( R. id . btn_terver ) ;
    c. setOnClickListener ( new OnClickListener ( ) <
    public void onClick ( View arg0 ) <
    startActivity ( new Intent ( getApplicationContext ( ) ,TerverActivity. class ) ) ;
    >
    > ) ;

    protected void onRestart ( ) <
    // TODO Auto-generated method stub
    super . onRestart ( ) ;
    Log. d ( «BEGUN_AD» , «resumeAd» ) ;
    ad. api ( «resumeAd» ) ;
    >

    //Создание диалоговых окон HELP_DIALOG и EXIT_DIALOG
    Override
    protected Dialog onCreateDialog ( int id )
    <
    switch ( id )
    <
    case HELP_DIALOG :
    LayoutInflater inflater = ( LayoutInflater ) getSystemService ( Context . LAYOUT_INFLATER_SERVICE ) ;
    View layout = inflater. inflate ( R. layout . help ,
    ( ViewGroup ) findViewById ( R. id . root ) ) ;
    AlertDialog. Builder builder = new AlertDialog. Builder ( this ) ;
    builder. setView ( layout )
    . setCancelable ( true )
    . setTitle ( «О приложении» )
    . setNeutralButton ( «ОК» , new DialogInterface. OnClickListener ( )
    <
    public void onClick ( DialogInterface dialog, int id )
    <
    dialog. cancel ( ) ;
    >
    > ) ;
    AlertDialog alert = builder. create ( ) ;
    return builder. create ( ) ;

    case EXIT_DIALOG :
    AlertDialog. Builder builder3 = new AlertDialog. Builder ( this ) ;
    builder3. setMessage ( «Уверены, что хотите выйти?» )
    . setCancelable ( false )
    . setPositiveButton ( «Да» , new DialogInterface. OnClickListener ( ) <
    public void onClick ( DialogInterface dialog, int id ) <
    SecondActivity. this . finish ( ) ;
    >
    > )
    . setNegativeButton ( «Нет» , new DialogInterface. OnClickListener ( ) <
    public void onClick ( DialogInterface dialog, int id ) <
    dialog. cancel ( ) ;
    >

    > ) ;
    AlertDialog alert3 = builder3. create ( ) ;
    return builder3. create ( ) ;

    default :
    return null ;
    >

    //Вызов диалога EXIT_DIALOG при нажатии на клавишу back смартфона
    Override
    public void onBackPressed ( ) <
    showDialog ( EXIT_DIALOG ) ;
    >

    Диалоговое окно «О приложении»

    Диалоговое окно выхода из приложения

    Реклама добавлена в приложение больше из интереса, чем из коммерческих соображений, т.к. очевидно, что на русском приложении много не заработать. Поэтому я подключил в него чисто русскую рекламу системы Begun, до этого на Хабре многое писалось про подключение рекламы, но в основном это были зарубежные «конторы».

    Плюсы использования рекламы Бегун

    Читайте также:  Battery monitor для android

    1. Удобный, качественный API.
    2. Удобный вывод денег на WebMoney.
    3. Хорошая служба поддержки, стабильно отвечающая на любые ваши вопросы.

    Минусы использования рекламы Бегун

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

    Как подключить рекламу BEGUN

    1. Заходим на сайт бегуна в раздел партнерам.
    2. Жмем «Стать партнером».
    3. Заполняем анкету.
    4. Жмем зарегестрироваться.
    5. Далее входим в свой кабинет на сайте.
    6. В правом верхнем углу жмете «Написать» (Перейдете в меню написания письма в службу поддержки).
    7. Пишите в службу поддержки о том, что у вас есть android-приложение и вы бы хотели подключить в него рекламу Begun, вам вышлют ваш pad_id и block_id, которые в ы и вставляете в код, написанный выше, вместо тегов .

    Интеграция рекламы Begun в приложение

    1. В classpath проекта необходимо добавить jar — библиотеку рекламы, доступную
    по адресу appsmobile.begun.ru/begunAdView.jar.
    2. Необходимо добавить в layout следующий блок:

    android:id = «@+id/ad»
    android:orientation = «vertical»
    android:layout_width = «fill_parent»
    android:layout_height = «wrap_content»
    android:layout_alignParentBottom = «true»
    />

    В качестве родительского слоя рекомендуется использовать RelativeLayout.
    3. Файл манифеста необходимо добавить следующие разрешения:

    android:name = «android.permission.INTERNET»/>
    android:name = «android.permission.ACCESS_COARSE_LOCATION»/>
    android:name = «android.permission.READ_PHONE_STATE»/>

    4. Инициализация библиотеки происходит следующим образом:

    import ru.begun.adlib.AdView ;
    import ru.begun.adlib.Callback ;
    import ru.begun.adlib.RequestParam ;
    AdView ad ;
    // Получаем вид
    ad = ( AdView ) findViewById ( R. id . ad ) ;
    // Устанавливаем слушатели событий
    // callback — слушатель, благодаря которому можно получить информацию
    // о событиях в библиотеке. Пока доступны следующие листенеры: AdLoaded, AdClickThru
    // и AdStopped. Для инициализации необходимо передать параметр environmentVars,
    // который содержит информацию о зарегистрированной площадке в системе
    // (BEGUN_PAD_ID, BEGUN_BLOCK_ID).
    // Для начала инициализации необходимо вызвать метод ad.init. Затем дождаться
    // callback со статусом adLoaded и только после этого вызвать метод
    // ad.api(«initAd»,al);
    ad. setOnApiListener ( new Callback ( ) <
    Override
    public void init ( ) <
    ArrayList RequestParam > al = new ArrayList RequestParam > ( ) ;
    RequestParam rp = new RequestParam ( ) ;
    rp. name = «environmentVars» ;
    rp. value = «pad_id: |block_id: » ;
    al. add ( rp ) ;
    ad. api ( «initAd» , al ) ;
    >
    Override
    public void callback ( String c ) <
    if ( c. equals ( «AdLoaded» ) ) <
    ad. api ( «startAd» ) ;
    >
    >
    > ) ;
    ad. init ( ) ;

    Для возобновления показа рекламных объявлений после того, как библиотека была остановлена,
    необходимо вызвать метод ad.api с параметром resumeAd.

    Все, реклама подключена и работает!

    main.xml

    version = «1.0» encoding = «utf-8» ?>
    xmlns:android = «schemas.android.com/apk/res/android»
    android:orientation = «vertical»
    android:layout_width = «fill_parent»
    android:layout_height = «fill_parent»
    android:weightSum = «1»
    android:background = «@drawable/main_1» >

    android:id = «@+id/btn1»
    android:layout_width = «wrap_content»
    android:layout_height = «wrap_content»
    android:background = «@layout/button_selector_leftcorner»/>

    android:textStyle = «bold» android:textColor = «#FFC000» android:background = «@layout/button_selector» android:layout_height = «wrap_content» android:layout_width = «173dp» android:text = «Ан. геометрия и лин. алгебра» android:id = «@+id/btn_geom» android:layout_above = «@+id/btn_terver» android:layout_alignLeft = «@+id/btn_terver» android:layout_marginBottom = «16dp» > >
    android:textStyle = «bold» android:textColor = «#FFC000» android:background = «@layout/button_selector» android:layout_height = «wrap_content» android:layout_width = «173dp» android:text = «Математический анализ» android:id = «@+id/btn_mathan» android:layout_above = «@+id/btn_geom» android:layout_alignLeft = «@+id/btn_geom» android:layout_marginBottom = «15dp» > >
    android:textStyle = «bold» android:textColor = «#FFC000» android:background = «@layout/button_selector» android:layout_height = «wrap_content» android:layout_width = «173dp» android:text = «Теория вероятностей» android:id = «@+id/btn_terver» android:layout_alignParentBottom = «true» android:layout_centerHorizontal = «true» android:layout_marginBottom = «186dp» > >
    android:id = «@+id/imageView1» android:src = «@drawable/andro» android:layout_height = «wrap_content» android:layout_width = «wrap_content» android:layout_above = «@+id/btn_mathan» android:layout_centerHorizontal = «true» > >
    android:layout_height = «wrap_content» android:layout_width = «fill_parent» >
    android:id = «@+id/imageView2» android:layout_height = «wrap_content» android:layout_width = «wrap_content» android:src = «@drawable/title» android:layout_alignParentTop = «true» android:layout_centerHorizontal = «true» android:layout_marginTop = «18dp» > >
    >

    android:id = «@+id/ad»
    android:orientation = «vertical»
    android:layout_width = «fill_parent»
    android:layout_height = «wrap_content»
    android:layout_alignParentBottom = «true»
    />

    android:id = «@+id/splashscreen»
    android:layout_width = «fill_parent»
    android:layout_height = «fill_parent»
    android:src = «@drawable/splashscreen» android:background = «#000» >
    >

    MatanActivity, GeomActivity и TerverActivity

    После клика по элементам списка в MatanActivity, GeomActivity или TerverActivity будет осуществляться переход на соответствующую деятельность отображения материала по данной теме ViewMatanActivity, ViewGeomActivity или ViewTerverActivity

    Код этих активити аналогичен указанным в посте Пишем шпаргалку на Android.

    Единственное замечание во всех ViewActivity вместо кода:

    WebView myWebView = ( WebView ) findViewById ( R. id . webview ) ;
    String summary = » » + text + «

    Источник

    Оцените статью