Итак, давайте сегодня создадим простое меню, для приложения на Android. Создадим новый проект. Назовем его Mymenu, нажмем next. Выберем Empty Activity. Нажмем finish.

Система Android studio подготовит нам новый проект, перейдем в gradle скрипы. В Build gradle, добавим новую имплементацию. Нам понадобятся пакет

implementation 'com.android.support:design:26.0.0-beta1'

По крайней мере, в моем проекте. Нажмем синхронизировать проект.

Пункты меню

Перейдем в папку Res и создадим в ней новую Andriod ресурсную папку с ресурсным типом - меню. В ней же, создадим новый ресурс файл меню. Имя файлу присвоим, как и имя папки - menu.

На наше основное меню перетаскиванием, добавим MenuItem в количестве 3 штук.

В файле strings.xml напишем новые название, для пунктов меню, создав дополнительные строковые значение для них.

Пусть item1 будет Пункт 1, item2 Пункт 2, и item3 пусть будет Выход.

<string name="item1">Пункт 1</string>
<string name="item2">Пункт 2</string>
<string name="item3">Выход</string>

В текстовом варианте menu.xml присвоим названия из strings.xml для наших пунктов. Также для каждого item мы добавим, Android:id с именем action1, action2,action3,

<item android:id="@+id/action1" android:title="@string/item1"/>
<item android:id="@+id/action2" android:title="@string/item2"/>
<item android:id="@+id/action3" android:title="@string/item3"/>

для взаимодействия с данными пунктами. Действие номер 1 будет отвечать за что-то, какая то реакция, нажатие пункта Action 2, соответственно, будет отвечать за другие действие, Action 3 будет отвечать за выход из приложения.

В файле MainActivity напишем несколько функций для работы с меню:

onCreateOptionsMenu

@Override
    public boolean onCreateOptionsMenu(Menu menu){
        getMenuInflater().inflate(R.menu.menu, menu);
        return true;
    }

onOptionsItemSelected

@Override
    public boolean onOptionsItemSelected(MenuItem item){
        int id = item.getItemId();
        switch (id){
            case R.id.action1:
                txt.setText(R.string.item1);
                return true;
            case R.id.action2:
                txt.setText(R.string.item2);
                return true;
            case R.id.action3:
                txt.setText(R.string.item3);
                finish();
                return true;
        }
        return super.onOptionsItemSelected(item);
    }

Объявим переменную типа TextView txt, и свяжем ее с элементом TextView, в onCreate через

txt=(TextView)findViewById(R.id.txt),

в макете activity_main.xml, добавив ему

android:id="@+id/txt"

для отображения текста.

Запустим в эмуляторе наше приложение. Как видим, появляются пункты меню, при нажатии на значение Пункт 1 или 2, текст меняется на Пункт 1 или Пункт 2, при нажатии на кнопку Выход появляется текст Выход и приложение закрывается.

Верстка меню

Кажется, все хорошо. Однако, как всегда в Android Studio данное меню будет работать только на эмуляторе, и поэтому добавим в файл styles.xml небольшой код, а перед этим в AndroidManifest.xml изменим

android:theme="@style/AppTheme" 

на

android:theme="@style/AppTheme.NoActionBar"

который говорит о том, что новый стиль без ActionBar. Также в MainActivity onCreate внесем переменную toolbar c типом ToolBar. Определим ее через toolbar = (Toolbar)findViewById(R.id.toolbar), и подключим поддержку setSupportActionBar(toolbar).

В макет activity_main.xml перед TextView добавим следующий код:

<android.support.design.widget.appbarlayout android:id="@+id/app_bar" android:layout_width="fill_parent" android:layout_height="wrap_content" android:fitssystemwindows="false" android:theme="@style/AppTheme.AppBarOverlay" tools:ignore="MissingConstraints,PrivateResource" tools:layout_editor_absolutey="0dp" tools:layout_editor_absolutex="0dp">

        <android.support.v7.widget.toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_collapsemode="pin" app:popuptheme="@style/AppTheme.PopupOverlay"></android.support.v7.widget.toolbar>

    </android.support.design.widget.appbarlayout>

Подключим эти виджеты в импорт нашего приложения.

import android.support.v7.widget.Toolbar;

Нажмем Alt+Enter, и у нас добавится, обновится импорт нашего приложения. Возможно, придется сделать несколько раз для подключения виджета. Нажмем Сохранить.

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

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

Сейчас я просто подключил свой сертификат. Введу пароль 2 раза, напишу псевдоним. Кнопку запомнить пароль отмечу, сигнатура V2, нажму finish.

Через некоторое время будет сформирован подписанный apk файл, который хранится в папке проекта, в папке release.

Откроем папку проекта и увидим там наше приложение app-release.apk с нашим меню. Я его скопирую и отправлю самому себе на яндекс диск. У меня там уже существует файл с таким же названием. Сейчас данные обновятся, и в видео под этой статьей вы можете посмотреть то, что я записывал на физическом устройстве, то есть на своем мобильном телефоне. Я открыл приложение Яндекс диска, запустил app-release.apk, нажал установку. Открыл, и, как видите, оно выглядит точно так же, как у нас было в эмуляторе, только теперь оно физически установленное и подписанное приложение, который можно передать кому-либо, отправить в PlayMarket, или выложить на своем сайте.

Смотрите видео Android studio Android Menu, как сделать меню андроид:

Рекомендуем смотреть видео в полноэкранном режиме, в настойках качества выбирайте 1080 HD, не забывайте подписываться на канал в YouTube, там Вы найдете много интересного видео, которое выходит достаточно часто. Приятного просмотра!

 С уважением, авторы сайта Компьютерапия


Понравилась статья? Поделитесь ею с друзьями и напишите отзыв в комментариях!



Предыдущие статьи


Cookies make it easier for us to provide you with our services. With the usage of our services you permit us to use cookies.
Ok