Як називається меню в андроїді. Як відкрити та налаштувати інженерне меню на Андроїд - інструкції та секретні коди. Коди сервісу апаратів на Андроїд

28.09.2020 Новини

Оновлена ​​версія Android 5 Lollipop, хоч і схожа на попередній KitKat, проте має деякі відмінності, які можуть здатися незвичними та незручними. Налаштувань у “Леденці” багато.

Одні з них (типу контрастного тексту або інвертування кольорів) потрібні небагатьом, інші необхідні практично кожному. Розглянемо питання, як налаштувати Андроїд 5, детальніше.

Заводські налаштування Android Lollipop

Одна з найважливіших Android 5 налаштувань – Factory Reset Protection («Захист фабричних налаштувань»). Активація цієї опції призведе до того, що скинути налаштування до заводських буде не можна без логіну та пароля до вашого облікового запису в Google.

Завдяки сервісу Android Device Manager власник втраченого або вкраденого смартфона зможе віддалено заблокувати та очистити пристрій.

Необхідно пам'ятати, що захист працює лише коли смартфон замкнений екраном активації.

Відновлення даних після інсталяції оновлення Андроїд

Ще одна корисна опція – можливість відновлення даних після встановлення Android 5.0 Lollipop. При початковому налаштуванні буде запропоновано різні варіанти відновлення даних аж до пропущених дзвінків.

Андроїд 5 налаштування облікових записів

Може стати в нагоді менеджер облікових записів користувачів - за аналогією з повноцінним десктопом можна буде розмежовувати доступ до можливостей смартфона.

Доступні 3 типи облікових записів:

  • Обліковий запис «Гість» (Guest) має мінімальні права. Будь-яка його інформація зберігається лише тимчасово. Щоразу при вході під обліком гостя система буде запитувати, чи хоче користувач почати роботу заново або продовжить останню гостьову сесію.
  • "Профіль" (Profile) дозволяє налаштувати доступ до програм та сервісів.
  • "Користувач" (User) - він же господар пристрою. Цей обліковий запис має найбільші права. Будь-яка зміна в налаштуваннях системи, така як додавання мережі Wi-Fi, буде застосовуватися до всіх інших облікових записів на пристрої.

Як додавати користувачів? Дуже просто - заходимо в налаштування та шукаємо напис "Користувачі" (Users).

Спочатку ви побачите профіль власника смартфона та гостьовий. Можна також додати користувачів.

Щоб додати нових користувачів, потрібно буде ввести їх облікові записи Google. Кожен користувач зможе кастомізувати операційну систему під себе. Власник пристрою не має можливості контролювати цей процес, однак у його владі дозволити чи заборонити іншим користувачам надсилати SMS та дзвонити.

Обмеження доступу до Андроїд 5 Lollipop

Ще одна корисна функція- Так звана "Кнопка". Якщо ви даєте комусь свій смартфон і не хочете, щоб у ньому копали або щось міняли, використовуйте «Кнопку». Вона обмежить функціональність пристрою лише одним додатком – тим, на якому встановлено. До іншого доступ буде заборонено: «Введіть пароль».

Як це зробити? Відкрийте налаштування та виберіть опцію “Безпека”. Натисніть на неї. У списку натисніть "Закріплення екрана" (Screen pinning). Потім перемкніть тумблер у положення "Увімк." (On).

Тепер ви можете закріпити будь-яку програму на екран. Для цього запустіть вибрану програму і двічі натисніть на віконці.

Щоб вийти із закріпленої програми, натисніть та утримуйте кнопки “Огляд” та “Назад”. За кілька секунд ви потрапите на робочий стіл.

Як налаштувати переривання в Андроїд 5

Крім усього іншого, налаштовувати в Android 5.0 Lollipop можна так звані «переривання» - ви зможете самі визначити, які контакти або програми зможуть вам дзвонити або надсилати повідомлення.

Як налаштувати переривання? Зайдіть в налаштування, виберіть “Звуки та сповіщення” (Sound & notification) та топніть за цією опцією. Нижче повзунків налаштування звуків буде опція "Переривання" (Interruptions) – натисніть на неї.

Можна дозволити турбувати вас лише вибраним контактам або програмам. У Lollipop є можливість включення режиму «Важливі» за розкладом - для цього є спеціальна опція «Розклад режиму «Тільки важливі оповіщення» (Downtime (priority interruptions only)).

Можна швидко змінювати режими пріоритету, просто торкнувшись повзунка гучності. Під ним будуть доступні режими "Не турбувати" (None), "Важливі" (Priority) та "Всі" (All).

Перші два режими можна увімкнути безстроково або на певний час. Кнопки “+” та “-” дозволяють регулювати інтервал часу, протягом якого вибраний режим діятиме. Тимчасовий проміжок може регулюватися від 15 до 8 годин.

Налаштування Lollipop блокування екрану та сповіщень

В Android 5.0 Lollipop вхідні сповіщення висвічуються на екрані блокування. Це не завжди зручно. Навряд чи комусь хочеться "світити" інформацію особистого характеру. Для цього випадку є гнучке налаштування в Android 5 способу виведення повідомлень.

Щоб це зробити, зайдіть в Налаштування -> Звук та сповіщення -> На заблокованому екрані -> Приховати особисту інформацію. Після цього сторонні очіїї не побачать.

Пошта в Андроїд 5 стала зручнішою

Поштова програма Gmail, окрім нового дизайну, отримала підтримку облікових записів на інших поштових сервісах, що підтримують протоколи IMAP та POP. Тепер не потрібно залазити в браузер, щоб відкрити негуглівську «скриньку» – все можна буде зробити з однієї програми.

Android 5 налаштування економії батареї

Якщо ви хочете, щоб смартфон працював довше на одній зарядці, слід дізнатися, як налаштувати в Андроїд 5 режим економії батареї Project Volta. За словами розробників, він дає змогу продовжити час роботи на 15-20%. Правда, пристрій починає помітно «гальмувати».

Щоб увімкнути цей режим, увійдіть у налаштування, натисніть на «Батарея», потім на кнопку меню (три точки у правому верхньому кутку) і виберіть режим економії батареї:

Коли режим економії батареї увімкнеться, навігаційна та статусна панелі смартфона стануть помаранчевим кольором і з'явиться повідомлення про включення режиму економії:

Якщо захочете, то цей режим можна відразу ж вимкнути - у повідомленні є така можливість.

Налаштування в Android 5 функції Switch Access

Головне меню - один із основних інструментів для взаємодії користувача з додатком. В Android 2.3.x і раніше воно було «заховано» на апаратній кнопці Menu, і розробники малювали меню, хто як умів. Але починаючи з Android 3.0 недоробку було виправлено, меню стало стандартним компонентом на Action Bar, і отримало низку нових можливостей. При цьому процес розробки меню практично не зазнав змін. Меню в Android – це не просто набір кнопок, на які можна вішати OnClickListener. В Android з меню можна зробити набагато більше, ніж здається на перший погляд.

У цій статті я розповім, як зробити сучасне меню, як адаптувати його різних розмірівекрану, як робити перемикачі типу radio button прямо в меню, а також як динамічно керувати видимістю кнопок меню, приховуючи ті функції вашої програми, які не працюватимуть на тому чи іншому смартфоні. Під час статті постараюся дати максимально тих чи інших можливостей меню, а також дам посилання на офіційну документацію на тему.

Ось так по-різному може виглядати меню однієї програми.

Наша перша кнопка у меню

Меню Android описуються у файлах ресурсів або формуються програмним кодом. Рекомендується перший варіант із цілого ряду причин: швидкість розробки, наочність, простота супроводу. Ресурси меню розміщуються в підкаталозі menu каталогу ресурсів програми res. Створюємо каталог menu, потім створюємо новий Android XML File:


Вибираємо тип ресурсу Menu, вводимо ім'я файлу. Так як у різних, швидше за все, буде різним, рекомендую прив'язувати імена файлів ресурсів меню до імен activity.

У редакторі, що відкрився, введемо код першої кнопки нашого меню:

Давайте розглянемо використані атрибути:

  • android:id вказуємо, щоб потім у коді відрізняти одні кнопки від інших.
  • android:orderInCategory вказує порядок нашої кнопки щодо інших. Вказуйте порядок з кроком 10 або 100, це дозволить у майбутньому додавати нові елементи в будь-яке місце, не перебудовуючи порядок інших.
  • android:showAsAction - найцікавіший параметр, оскільки саме він керує поведінкою елементів меню у різних ситуаціях. Він може приймати цілий рядзначень:
    • ifRoom - Показувати елемент у action bar, тільки якщо для нього достатньо місця. Якщо місця недостатньо, елемент буде автоматично прихований у додаткове меню (те, що показано трьома точками один над одним). Це найкращий спосіб кастомізації меню в залежності від розміру екрана пристрою. На великих екранах планшетів action bar буде заповнено кнопками, а на невеликих телефонахбудуть показані найважливіші кнопки, тоді як до решти також можна дістатися, але тільки через додаткове меню. Майте на увазі, що додаткове меню відображається в action bar тільки на смартфонах, на яких немає апаратної кнопки меню.
    • withText - Поруч із іконкою кнопки буде показаний текст, заданий властивістю android:title . Цей параметр можна вказувати у поєднанні з іншими, розділяючи параметри знаком |
    • never - Кнопка ніколи не буде видно на action bar, навіть якщо є місце для неї. До такої кнопки завжди доведеться діставатись через додаткове меню.
    • always - завжди показувати кнопку в action bar. Даним параметром не можна зловживати, оскільки на маленьких телефонах кнопки можуть почати заповзати інші елементи action bar, наприклад на заголовок програми. Визначте для кожної діяльності максимум одну найважливішу кнопку, без якої ніяк не можна, і позначте всі тільки у неї. Інші (а по можливості всі) повинні бути ifRoom .
    • collapseActionView - дозволяє зробити кнопку, що відкриває або приховує додатковий елемент View в action bar. Наприклад, можна задати такий параметр іконці пошуку, на її кліку показувати прямо в action bar поле для введення пошукового запиту.
  • android:title – визначає заголовок кнопки меню. Він може відображатися поряд з іконкою в action bar або назва елемента в додатковому меню.
  • android:icon - кнопка значок.

Іконки для меню

Якщо ви розробляєте програму в стилі Holo, ви можете використовувати готовий набір іконок від Google, який доступний для завантаження з офіційного сайту абсолютно безкоштовно.

Набір іконок представлений окремо для темної та окремо для світлої теми Holo, а також різних розмірів екранів. Якщо ви не можете дозволити собі дизайнера у команді, цей набір просто незамінний.

Підключення меню до Activity

Завантажити меню із ресурсу дуже швидко. Відкриваємо код Activity і перекриваємо метод onCreateOptionsMenu:
@Override public boolean onCreateOptionsMenu( Menu) ( getMenuInflater().inflate(R.menu.your_activity_menu, menu); return true; )
Тепер меню з'являється, але при натисканні на кнопку нічого не відбувається. Повісити обробник на кнопку можна кодом або прямо в XML-ресурсі, задавши як android:onClick ім'я методу-обробника. Щоб зробити те саме кодом, потрібно в Activity перекрити метод onOptionsItemSelected:
@Override public boolean onOptionsItemSelected(MenuItem item) ( switch (item.getItemId()) ( case R.id.menuPurchasesListNewRecord: // TODO: обробник натискання тут return true; ) return super.onOptionsItemSelected

Створюємо підменю

Підменю корисно, коли хочемо уточнити спосіб виконання дії, представленого в action bar. Наприклад, у нас є список покупок та кнопка «Сортування». Після натискання кнопки потрібно з'ясувати, за яким параметром користувач хоче відсортувати елементи списку: за категорією товару, за назвою або за порядком додавання до списку. Подивимося код підменю для такого випадку:

Тут ми оголосили ще один тег усередині тега. Підменю являє собою групу тих же тегів, що дозволяє при необхідності зробити підменю в підменю і так далі.

Radio button"и в меню

Ми тільки-но зробили меню для вибору порядку сортування покупок. Було б чудово показувати, який спосіб сортування використовується зараз. Список може бути відсортований лише одним із трьох можливих способів, що відмінно відповідає ідеї radio button. Щоб зробити з нашого підменю набір radio button, достатньо тегу вказати властивість android:checkableBehavior="single" . Можливі значення android:checkableBehavior:
  • single - вибір лише одного з доступних елементів, наш випадок
  • all - вибір будь-якої кількості доступних елементів, аналог check box
  • none - елементи групи є звичайними елементами меню, це значення за промовчанням

Отриманий код меню:

Якщо запустити програму та спробувати вибрати один із способів сортування, нічого не станеться. У меню не показано, що елемент вибраний. Це доведеться зробити вручну викликом item.setChecked(true);
@Override public boolean onOptionsItemSelected(MenuItem item) ( switch (item.getItemId()) ( case R.id.menuPurchasesListNewRecord: // TODO: обробник натискання тут return true; case R.id.menuPurchasesListSort return true, case R.id.menuPurchasesListSortOrderName: item.setChecked(true); return true;

Якщо у вас залишилися питання щодо роботи з головним меню, буду радий відповісти в коментарях.

Android підтримує кілька типів меню. Перший – на телефоні є окрема кнопка Menu(У старих телефонах), натискання якої викликає меню. У нових пристроях окрему кнопку прибрали, замінивши на піктограму меню у вигляді трьох точок вертикальної орієнтації. Другий тип – контекстне меню, яке з'являється при натисканні та утримуванні пальця на екрані в потрібному місці (також можна натиснути та утримувати центральну кнопку на телефоні). Контекстне менюсвоєю чергою може мати підменю. Сьогодні ми познайомимося із першим типом меню. У цій статті розглядатиметься робота з меню на нових пристроях під керуванням Android 4.0 і вище.

У шаблоні Empty Activityнемає меню, тому ми створимо його самі. Це допоможе вам зрозуміти принцип роботи та отримати загальне уявленняПро проект. Запам'ятати назви класів, методів та код для обробки вибору пунктів меню необов'язково. В інших шаблонах меню буде вбудовано, і ви можете відразу використовувати його.

Створіть новий проект на основі Empty Activityі запустіть його. Жодного меню поки немає.

Створимо кілька рядкових ресурсів у файлі res/values/strings.xml, які відповідатимуть за пункти меню:

Settings Кіт Кішка Кошеня

Налаштування

В додаток Налаштуванняможна потрапити: натиснувши на іконку в меню програм (або на робочому столі) або через піктограму панелі перемикачів. Основний екран програми розділений на дві вкладки ВСЕ та ПІДТРИМКА, в останній можна виявити два посилання: Довідковий центр / Залишити відгук та Рекомендації та корисні поради . У деяких країнах у вкладці підтримки можна отримати допомогу та поставити запитання живій людині в чаті. Всі налаштування смартфона зібрані в 4 групи: Бездротові мережі, Пристрій, Особисті дані та Система; і розбиті на 22 розділи. У верхній частині закріплено 5-ту групу яка називається Підказки, тут з'являються інтерактивні поради щодо налаштування системи. Ще одне нововведення полягає в наявності кнопки Довідка/відгук у всіх розділах/налаштуваннях. У всіх екранах Налаштувань крім головного є бічне меню для швидкого переходудо інших розділів.

Базові програми

Телефон– на головному екрані програми відображаються: рядок пошуку з кнопками голосового пошуку та виклику налаштувань програми, знизу, кнопка виклику номеронабирача. Вкладка Швидкий набір містить картки контактів, що часто набираються, вкладка Нещодавні містить список останніх дзвінків, вкладка Контакти – відповідно всі контакти. У налаштуваннях програми можна керувати шаблонами швидких відповідей та списком заблокованих абонентів.

Контакти– це програма для роботи з контактами користувача. За функціональністю воно мало чим відрізняється від вкладки Контакти у телефоні.

Повідомлення– додаток для роботи із SMS за замовчуванням. Основний екран програми містить список діалогів, кнопки пошуку, налаштувань та створення нового повідомлення. Програма виглядає максимально просто і має примітивну функціональність. З незвичайного зазначу те, як додаток надає кожному діалогу свій унікальний основний колір.

Gmail– це програма для роботи з електронною поштою за замовчуванням починаючи з п'ятої версії Android. До нього можна додавати поштові скриньки не лише від Google, а й від інших. поштових сервісів. На головному екрані відображається список листів та кнопки пошуку та створення нового повідомлення. Свайп від лівого краю екрана викликається бічна панель, яка містить список папок та ярлик налаштувань.

Chrome– є системним браузером за умовчанням, до його плюсів можна віднести інтеграцію з сервісами Google та широкі можливості синхронізації вкладок, форм, паролів тощо, до мінусів – неідеальний користувальницький інтерфейста зайве навантаження на процесор та акумулятор.

Годинник– включає такі функції: будильник, світовий час, таймер і секундомір;

Камера. На головному екрані розташований видошукач і кнопки: спуск затвора, перемикання на фронтальну камеру, галереї, увімкнення таймера, активації спалаху, перемикання режиму HDR+, увімкнення сітки, вибору пресета балансу білого та Додатково. Перемикання між режимами зйомки фото та відео здійснюється свайпом убік. Крім основного режиму зйомки є ще чотири: Уповільнена зйомка – дозволяє знімати із чотирикратним або восьмикратним уповільненням; Панорама дозволяє створювати панорамні фотографії з кутом огляду до 360°; Photo Sphere – створення фотосфери; Розмиття – дозволяє створювати фотографії зі штучним ефектом Боке.

Фото– ця програма виконує роль системної галереї і водночас є клієнтом однойменного сервісу від Google.

Календар– основним уявленням додатка є Розклад, де всі події йдуть одним списком, що цікаво: початок кожного місяця в цьому списку озаглавлено симпатичною картинкою, що відображає основну суть цього місяця. Щоб подивитися на місяць, потрібно тапнути за назвою поточного місяця в заголовку. Подання можна змінити на День, 3 дні, Тиждень та Місяць. У нижньому правому куті відображається кнопка додавання події.

Калькулятор– має стандартну та розширену функціональність. У портретній орієнтації панель з додатковими функціями(sin, cos, tan, ln і т.д.) викликається свайпом від правого краю екрану, в альбомній орієнтації ця панель видно завжди.

Карти– це додаток-клієнт для Карт Google. Основний екран містить рядок пошуку та кнопки: кнопка виклику бокового меню, кнопка голосового пошуку, кнопка орієнтації на північ, кнопка визначення поточного розташування та кнопка створення маршруту. У бічному меню можна зберегти обрану ділянку карти в пам'ять телефону для подальшого користування програмою в режимі офлайн. У розділі "Хронологія" ведеться журнал переміщень користувача. Розділ “Ваші враження” містить відгуки про публічні місця: ресторани, торгові центри, салони краси тощо.

Завантаження- Найпростіший менеджер завантажень.

Фірмові програми

Play Маркет – це клієнт магазину програм та основна фірмова програма від Google. За допомогою нього здійснюється купівля, встановлення та оновлення сторонніх додатків. Розділ “Ігри та програми” являє собою віртуальну вітрину, де відображаються різні добірки товару, наприклад, Новинки або Найкращі популярні ігри, у вигляді мініатюр додатків, які очолюють відповідну добірку та посилання на весь список. Розділ "Фільми, музика, книги" це теж віртуальна вітрина, але на ній представлений відповідний контент та преса також у вигляді добірок та банерів. Розділ “Мої програми та ігри” для зручності користувача складається з двох списків: Встановлені та Усі. Розділ "Список бажань" показує всі товари колись зазначені користувачем як бажані.

Play Ігри- Це додаток клієнт однойменного сервісу. Розділ "Головна" відображає основні дані про користувача: ім'я, рівень, скільки очок досвіду потрібно набрати для переходу на наступний рівень. Нижче відображаються списки ігор: рекомендовані ігри, ігри в які грає користувач і що грають друзі. Розділ “Мої ігри” містить три вкладки: останні, всі та встановлені. Розділ “Сповіщення” у трьох вкладках відображає список запрошень, список подарунків та запитів та список квестів. Розділ “Гравці” у двох вкладках відображає список доданих гравців та список рекомендованих – друзів друзів. Розділ “Знайти ігри” також містить три вкладки: Рекомендуємо, Популярні та Мережеві ігри.

Play Музика– це музичний плеєрі, одночасно, клієнт однойменного хмарного музичного сервісу. Розділ “Головна” відображає список останніх дій користувача: прослухані або куплені треки. Розділ "Фонотека" відображає всі треки користувача, куплені або закачані ним з комп'ютера, сортую у вкладках по плейлисту, виконавцю, альбому або жанру. Присутня цікава функція "Автомікси", вона значно спрощує створення плейлистів з великої кількості треків, для створення автоміксу достатньо вказати ім'я виконавця, альбому або жанру, і додаток сам створить новий плейлист. У бічному меню також є посилання Play Маркет, т.к. купівля треків провадиться тільки з нього. Тепер у налаштуваннях є еквалайзер.

Play Фільми– це клієнт сервісу для купівлі/прокату фільмів та перегляду на мобільному пристрої. Розділ “Головна” відображає фільми, серіали та мультфільми зібрані у плейлисти за жанрами та популярністю. Розділ "Бібліотека" відображає список куплених або взятих у прокат користувачем фільмів. У бічному меню є посилання Play Маркет.

YouTube- Це клієнт однойменного сервісу. Основний екран розділений на чотири вкладки: Головна, У тренді, Передплати та Акаунт. Остання вкладка містить розділи: Переглянуті, Мої відео, Оповіщення, Покупки та Переглянути пізніше; а також список плейлистів. Вікно перегляду ролика зручне та функціональне, але має одну неприємну особливість: при відкритті ролика починається його автоматичне завантаження, навіть якщо пристрій для доступу до Інтернету використовує мобільну мережу . Тому якщо ви відкрили відео не для перегляду, а, наприклад, для перегляду опису або коментарів, приготуйтеся розлучитися з кількома десятками (сотнями?) мегабайт трафіку.

Диск– це програма для роботи з сервісом хмарного зберігання даних Google Диск. Основний екран відображає кореневу директорію сховища користувача та список нещодавно відкритих файлів. Розділ “Доступні мені” відображає список інших користувачів, до яких відкритий доступ. Крім цього є розділи: Google Фото, Нещодавні, Помічені, Офлайн-доступ та Завантажені. У бічній панелі знизу показується який об'єм дискового простору зайнятий і скільки доступно користувачу.

Останні кілька років Appleі Google послідовно рухають свої операційні системи назустріч одна одній, якщо бути точним, намагаються зайти одна до одної у фланг. Apple з кожною версією iOS розширює функціональність і намагається зробити систему більш гнучкою для користувача та програм. Google же намагається виправити традиційні слабкі: привести в порядок роботу з повідомленнями, зробити одноманітним і більш вивіреним і подолати витік заряду акумулятора. І вони, треба сказати, рухаються в правильному напрямку, шкода що іноді надто повільно.

В Android 7.1 особисто мене підкуповують: більш доброзичливі в порівнянні з iOS механіка багатозадачності та робота з кількома програмами; гнучкість у виборі інструментів на вирішення тих чи інших завдань; глибока інтеграція з сервісами Google, якими я активно користуюсь; більш стрункий і логічний інтерфейс користувача. Не можна не помітити, як Google підчистив список встановлених додатківпозбавивши користувача від мотлоху. Не влаштовує мене: дренаж заряду батареї, що зберігся; різнобій в UI переважної кількості програм і менш ефективне використання поверхні екрану. Систему, незважаючи на постійні покращення, досі не можна назвати повністю безпечною, загальна оптимізація в iOS як і раніше краще. Підсумовуючи, можна однозначно стверджувати, що Android до п'ятої версії і зараз це майже дві різні системи, тішить, що Google намацали правильний напрямок і повільно і вірно рухаються ним.

До появи Honeycomb (Android 3.0) усі Android пристрої мали кнопку "меню" під екраном. Розробники могли використовувати її на свій розсуд, інтерфейси багатьох програм були побудовані саме навколо цієї кнопки. В орієнтованому на планшети Honeycomb було зроблено крок у бік відмови від механічних (і сенсорних) кнопок, у зв'язку з цим, у третій версії Android з'явився клас ActionBar, який дозволяв дати користувачеві швидкий доступ до налаштувань програми через спеціальну панель, яка називається action bar. На думку розробників Google, майбутнє за Action Bar-ом і програмісти повинні відмовитися від використання кнопки "меню". В даний час на ринку домінують смартфони з механічною або сенсорною кнопкоюпід екраном, але з появою Ice Cream Sandwich ситуація може різко змінитись. Вам, як розробнику, важливо заздалегідь підготуватися до появи таких пристроїв та використовувати концепцію Action bar вже сьогодні.

На перший погляд може здатися, що використання Action Bar викличе проблеми при розробці програм для Android 2.x, в якому ця панель ще не була реалізована. Однак тут нема проблеми. Ніхто не забороняє Вам продовжувати використовувати кнопку "меню" на тих пристроях, де вона присутня, додавання ж Action Bar-а вимагатиме від вас написання всього кількох рядків коду.

Якби я спробував стиснути цю статтю в одну пропозицію, вона звучала б так: " Встановіть targetSdkVersion в 14 і позначте тегом showAsAction="ifRoom" елементи меню, які мають бути винесені на Action Bar".

Остаточна відмова від меню налаштувань в Android

Недостатньо просто відмовитись від використання кнопки "меню", потрібно повністю викинути цю концепцію зі своєї голови. Не створюйте меню, створіть усі необхідні кнопки безпосередньо всередині діяльності (activity). Якщо якісь дії не поміщаються на панель, винесіть їх у додаткове меню (action overflow). На наведеній картинці показано action bar з кнопкою для пошуку та додаткове меню з правого боку панелі.

Якщо Ваш додаток створено під стару версіюандроїда (в якій традиційно використовується меню), то при запуску на Android 3 планшеті в нижній частині екрана відображатиметься панель, що емулює три кнопки, що існують на телефонах другої гілки.

Термінологія досить заплутана, але меню, що випадає (action overflow) передбачає абсолютно іншу концепцію використання, ніж просте меню налаштувань. Замість того, щоб розглядати меню як вмістище всіх налаштувань програми, ви створюєте панель, на яку розміщуєте основні налаштування. Все другорядне виноситься в меню, що випадає, що викликається при натисканні кнопки з трьома точками (Action overflow button) в правій стороні панелі.

Action overflow button

Якщо ви запускали програми, написані для Android 2.3 і нижче на пристроях без кнопок під екраном (наприклад, на планшеті з Honeycomb або на Galaxy Nexus), ви напевно помітили, що поряд із зображенням трьох кнопок на панелі внизу з'являється і кнопка Action overflow (три крапки один над одним). Це якийсь компроміс, проте, не дуже вдалий. У програмах, які взагалі не використовуються меню налаштувань, ця кнопка нічого не робить, дратуючи користувачів. Тому дуже непоганим рішенням було б стежити за версією Android-а, і якщо Ваша програма запускається під Android 3.0+, прибирати цю кнопку з навігаційної панеліта використовувати Action Bar. Такий підхід дозволяє зберегти сумісність програми зі старими апаратами та зробити її привабливішою для нових.

Якщо програма запущена на пристроях без кнопок, система вирішує, чи потрібно додати action overflow на навігаційну панель залежно від значення поля у маніфесті. Логіка наступна

  • Якщо Ви встановили значення minSdkVersion або targetSdkVersion більше 11, то система не додає цю кнопку.
  • З іншого боку, система створює цю кнопку, коли ви запускаєте програму на Android 3.0 і вище.
  • Єдиний виняток: коли ви встановите minSdkVersion 10 або нижче; targetSdkVersion в 11, 12 або 13, і не будете використовувати ActionBar, система додасть цю кнопку на телефонах (не планшетах) під управлінням Android 4.0 та вище. В основі цього виключення лежить наступна ідея: якщо Ви розробляєте програму одночасно для телефонів другої гілки і для третьої планшетів, то Ви припускаєте, що у телефонів повинна бути кнопка меню, а у планшетів її немає.

Таким чином, якщо ви хочете заборонити overflow action кнопку в навігаційній панелі, Вам потрібно встановити targetSdkVersion в 14 (в minSdkVersion можна записати більш низьке значення, щоб програма могла запускатися на старих пристроях).

Перехід до концепції action bar-а

Якщо у Вас є діяльності, які використовують меню налаштувань (створене за допомогою onCreateOptionsMenu()), то прибравши кнопку з панелі навігації (встановивши targetSdkVersion=14) Ви повинні надати користувачеві альтернативний засібдоступу до налаштувань. На щастя, від Вас не потрібно багато роботи, оскільки в системі автоматично створюється action bar.

Додати showAsAction="ifRoom" у теги елементів, які ви хочете помістити в action bar. Якщо ви не впевнені, який з елементів варто включати до Action Bar, зверніться до Android Design's Action Bar guide .

Щоб зробити сприйняття вашої програми більш цілісним, рекомендуємо Вам використовувати як іконки для Action bar-а іконки від Android UX Team. Архів.

Як видалити Action Bar з Android програми

Якщо Вам не потрібен Action bar, Ви можете видалити його з будь-якої діяльності або взагалі з програми. Це може бути актуальним для ігор та програм, які не використовують меню налаштувань. Ви можете видалити action bar, використовуючи тему Theme.Holo.NoActionBar або Theme.DeviceDefault.NoActionBar.

Якщо ви хочете використовувати ці схеми, але зберегти зворотну сумісність, можете використовувати систему управління ресурсами, щоб встановити різні теми різних версійплатформ. Докладніше цю тему розкрито тут. Вам знадобиться створити власну тему, яка успадковуватиме теми різних платформ залежно від поточної версії.

Наприклад, Ви можете оголосити тему для своєї програми

(або для конкретної діяльності у тезі ).

Для пристроїв, що працюють на Android 2, увімкніть наступну тему res/values/themes.xml.



Для Honeycomb увімкніть наступну тему в res/values-v11/themes.xml.



При запуску в залежності від версії APIсистема вибере відповідну тему.

Висновок

Повторимо тезово ключові ідеї та моменти статті:

  • на нових Androidпристроях може бути відсутня кнопка "menu", тому при розробці програм краще взагалі відмовитися від її використання.
  • Встановіть targetSdkVersion = 14 і протестуйте свою програму на Android 4.0.
  • Додати тег showAsAction="ifRoom" в Елемент меню, якщо хочете, щоб він автоматично потрапив на панель action bar.
  • Якщо у програмі не використовується ActionBar, Ви можете прибрати її, скориставшись темами Theme.Holo.NoActionBar і Theme.DeviceDefault.NoActionBar.

Створення меню

Останнє оновлення: 26.02.2017

Меню в додатках представляє клас android.view.Menu, і кожна activity асоціюється з об'єктом цього типу. Об'єкт android.view.Menu може включати різну кількість елементів, а ті можуть зберігати поделементи.

Визначення меню у xml

Меню, як і файли інтерфейсу або зображень, також є ресурсом. За промовчанням файли меню знаходяться у проекті в каталозі res/menu.

При створенні нового проекту з Empty Activity у нас немає жодного каталогу res/menu і, відповідно, немає ресурсів меню, але ми можемо їх додати вручну. Для цього натиснемо правою кнопкою миші в проекті на каталог res і далі в списку виберемо пункт New -> Android Resource File :

Після цього в каталозі res буде створено підкаталог menu, в якому буде файл main_menu.xml.

За промовчанням цей файл визначає один порожній елемент menu:

Змінимо вміст файлу, визначивши кілька пунктів:

Тег

є кореневим вузлом файлу та визначає меню, що складається з одного або кількох елементів і .

Елемент представляє об'єкт MenuItem, який є одним із елементів меню. Цей елемент може містити внутрішній поделемент

, за допомогою якого створюється підменю.

Елемент включає наступні атрибути, які визначають його зовнішній виглядта поведінка:

    android:id : унікальний id елемент меню, який дозволяє його пізнати при виборі користувачем і знайти через пошук ресурсу по id

    android:orderInCategory : порядок проходження елемента в меню

Наповнення меню елементами

Ми визначили меню з трьома елементами, але визначення елементів у файлі ще не створює меню. Це лише декларативний опис. Щоб вивести його на екран, нам треба використовувати його у класі Activity. Для цього треба перевизначити метод onCreateOptionsMenu. Отже, перейдемо до класу MainActivity і змінимо його так:

Package com.example.eugene.menuapp; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; public class MainActivity extends AppCompatActivity ( @Override protected void onCreate(Bundle savedInstanceState) ( super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ) @Override public boolean onCreateOptionsMenu .menu.main_menu, menu);return true; ) )

Метод getMenuInflater отримує об'єкт MenuInflater і викликаємо його метод inflate(). Цей метод як перший параметр приймає ресурс, що представляє наш декларативний опис меню xml, і наповнює їм об'єкт menu, переданий як другий параметр.

Запустимо програму за замовчуванням і натиснемо на кнопку меню у правому верхньому кутку:

Обробка натискань у меню

Якщо ми натиснемо на будь-який пункт меню, то нічого не станеться. Щоб прив'язати до меню дії, нам потрібно перевизначити в класі діяльність наОпціїІмSelected .

Для виведення вибраного елемента меню у файлі activity_main.xml визначимо текстове поле з id=header:

І змінимо клас MainActivity:

Package com.example.eugene.menuapp; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.TextView; public class MainActivity extends AppCompatActivity ( @Override protected void onCreate(Bundle savedInstanceState) ( super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ) @Override public boolean onCreateOptionsMenu .menu.main_menu, menu), return true; ( case R.id.action_settings: headerView.setText("Налаштування"); return true; case R.id.open_settings: headerView.setText("Відкрити"); return true; case R.id.save_settings: headerView.setText( "Зберегти"); return true; ) return super.onOptionsItemSelected(item); ) )

Щоб зрозуміти, який пункт меню обрано, спочатку отримуємо його ідентифікатор int id = item.getItemId() . Потім пробігаємось у конструкції switch..case і вибираємо потрібний варіант і в залежності від вибору робимо певні дії - в даному випадку встановлюємо текст TextView.

Перший місяць навчання. Розглянемо роботу з меню глибше. Розглянуть як старі пристрої під Android 2.3, так і нові телефони на Android 4.0.

Меню вибору опцій (Options Menu)

За меню відповідає клас android.view.Menu. Кожна активність пов'язана з об'єктом меню. Саме меню містить пункти меню (клас android.view.MenuItem) та підменю (клас android.view.SubMenu).

При натисканні кнопки Menuна старих телефонах з'являється набір пунктів меню, що кріпиться до активності. Меню може містити піктограми. Таке меню може містити шість пунктів (зазвичай). За наявності більше шести пунктів використовується розширене меню – у цьому випадку замість шостого пункту з'являється пункт Опції(Більше). При натисканні цього пункту відображається розширене меню зі списком пунктів, які не помістилися в основному меню вибору опцій.

Коли меню відкривається вперше, Android викликає метод onCreateOptionsMenu(), передаючи як параметр об'єкт Menu. Меню можна створювати у вигляді ресурсів у XML-файлі або використовувати метод add().

У стандартному проекті при виборі звичайного шаблону є заготівля для меню з одного пункту Settingsта виклик методу для меню (ви про це вже знаєте).

Створення меню за допомогою ресурсів

Розглянемо роботу з меню через ресурси. Для створення меню використовуються ресурси, які потрібно зберігати в XML-файлі. Сам файл повинен знаходитись у папці res/menu/вашого проекту. Меню складається з наступних елементів:

Визначає меню, яке містить пункти меню. Елемент має бути кореневим елементом у XML-структурі файлу і може містити один або кілька елементів і Створює пункти меню. Цей елементможе мати вкладений елемент для створення підменю За бажанням також можете використовувати невидимий контейнер для елементів . Це дозволяє досягти деяких ефектів

Припустимо, ми вирішили використовувати меню для будь-якої гри. Створимо новий файл game_menu.xml:

Ми створили меню із двома пунктами. Кожен пункт включає наступні атрибути:

Android:id Ідентифікатор пункту меню, яким програма може розпізнати при виділенні пункту меню користувачем android:title Текст, який буде виводитися в меню

Існують інші атрибути для елемента item, наприклад android:icon="@drawable/home"дозволить також вивести значок для пункту меню, а android:enabled="false"дозволяє зробити пункт меню недоступним.

Атрибут android:titleCondensedзастосовується в тому випадку, якщо звичайний заголовок занадто широкий і не розміщується у вибраному елементі меню.

Атрибут android:orderInCategoryвизначає порядок, де відображаються елементи меню MenuItems.

Під час створення меню ми вказали на рядкові ресурси @string/new_gameі @string/help. Необхідно додати нові рядки у файлі strings.xml:

Нова гра Довідка

Тепер потрібно внести зміни до класу активності, в якому виводитиметься меню. Програма повинна конвертувати створений нами ресурс меню програмний об'єкт. Для цієї мети існує спеціальний метод MenuInflater.inflate(), який викликається у спеціальному методі зворотного виклику onCreateOptionsMenu(). Цей методта призначений для виведення меню при натисканні кнопки MENUна пристрої:

@Override public boolean onCreateOptionsMenu(Menu menu) ( MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.game_menu, menu); return true; )

Після вставки коду середовище розробки попросить імпортувати відсутні простору імен.

Import android.view.Menu; import android.view.MenuInflater;

Метод onCreateOptionsMenu()метод ініціює першу появу меню на екрані та приймає як параметр об'єкт Menu (для старих пристроїв). Ви можете зберегти посилання на меню і використовувати її в будь-якому місці коду, поки метод onCreateOptionsMenu()знову не буде викликано. Вам необхідно завжди використовувати реалізацію цього оброблювача з батьківського класу, тому що вона при необхідності автоматично включає додаткові системні пункти в меню. У нових пристроях метод викликається під час створення активності. Метод повинен повертати значення true, щоб меню відображалося на екрані.

Запустивши програму, натисніть кнопку MENUна емуляторі, щоб побачити створене меню.

Метод getMenuInflater()повертає екземпляр класу MenuInflaterми використовуємо для читання даних меню з XML.

Як бачите, меню з'являється у нижній частині екрана. Усього можна одночасно вивести на екран шість пунктів меню. Якщо пунктів більше, то буде виведено п'ять пунктів плюс шостий пункт Більше, який дозволить побачити решту пунктів. Давайте перевіримо та додамо нові пункти меню.

Спочатку додамо шість пунктів.

Додамо ще один пункт до меню, щоб їх стало сім.

Вибір пунктів меню

Ми навчилися створювати меню. Але поки що воно марне, тому що пункти меню ніяк не реагують на наші натискання. Для обробки натискань пунктів меню слугує метод onOptionsItemSelected(). Метод розпізнає пункт, вибраний користувачем, через MenuItem. Ми можемо тепер визначити обраний пункт через дзвінок getItemId(), що повертає ідентифікатор пункту меню. Далі через оператор switchнам залишається визначити потрібні команди:

@Override public boolean onOptionsItemSelected(MenuItem item) ( // Операції для вибраного пункту меню switch (item.getItemId()) ( case R.id.new_game: newGame(); return true; case R.id.help: showHelp() ; return true; default: return super.onOptionsItemSelected(item); ) ) public void newGame() ( edtext.setText("Вибраний пункт Нова гра"); ) public void showHelp() ( edtext.setText("Вибраний пункт Довідка" );

Запустіть програму, викличте меню та виберіть перший або другий пункт меню. У текстовому полі з'явиться повідомлення.

У наведеному прикладі getItemId()запитує ID для вибраного пункту меню та починає порівнювати через оператор вибору switch з ідентифікаторами, які ми задали у XML-ресурсах. При виявленні потрібного ідентифікаторавиконується обробник для заданого пункту меню. Якщо програма нічого не виявить, то виконується оператор defaultякий повертає super class.

До Android 3.0 можна додати атрибут android:onClickу ресурсах меню, і вам уже не потрібно використовувати onOptionsItemSelected(). За допомогою android:onClickВи можете вказати потрібний метод під час вибору пункту меню.

// у атрибута пункту меню встановлено значення android:onClick="onMenuClick" public void onMenuClick(MenuItem item)( edtext.setText("Вибраний пункт Нагодувати кота"); )

Програмне створення меню

Розглянемо програмне створення меню для повноти картини. Нам потрібно буде визначити кілька констант для пунктів меню:

// ідентифікатори пунктів меню private static final int IDM_OPEN = 101; private static final int IDM_SAVE = 102; public boolean onCreateOptionsMenu(Menu menu) ( // додаємо пункти меню menu.add(Menu.NONE, IDM_OPEN, Menu.NONE, "Відкрити"); menu.add(Menu.NONE, IDM_SAVE, Menu.NONE, "Зберегти") ;)

У методу add()є чотири параметри:

  • ідентифікатор групи – дозволяє пов'язувати пункт меню з групою інших пунктів цього меню
  • ідентифікатор пункту для обробника події вибору пункту меню
  • порядок розташування пункту меню - дозволяє визначати позицію в меню. За замовчуванням (Menu.NONE або 0) пункти йдуть у порядку, як в коді
  • заголовок – текст, який виводиться у пункті меню. Можна використовувати рядковий ресурс

Метод повертає об'єкт MenuItem, який можна використовувати для встановлення додаткових властивостей, наприклад, встановити значок, гарячу клавішу і т.д.

Якщо ви хочете створити меню зі значками, то скористайтеся методом setIcon()

Menu.add(Menu.NONE, IDM_OPEN, Menu.NONE, "Відкрити") .setIcon(R.drawable.icon_menu_open);

Нагадаємо ще раз, що значки можна додати лише до шести пунктів меню (або до п'яти, якщо пунктів більше шести).

Метод onCreateOptionsMenuвикликається системою лише один раз під час створення меню. Якщо вам потрібно оновити меню під час роботи програми, використовуйте метод зворотного виклику onPrepareOptionsMenu().

При виборі пункту меню викликається метод onOptionsItemSelected, який передає об'єкт MenuItem- пункт меню, вибраний користувачем. За допомогою методу getItemIdВи можете отримати ідентифікатор вибраного пункту меню. Після ідентифікації пункту меню можна написати код для обробки події вибору меню:

Public boolean onOptionsItemSelected(MenuItem item) ( switсh (item.getItemId()) case IDM_OPEN: return true; case IDM_SAVE: return true; return false; )

Гарячі клавіші

Також можна ставити гарячі клавіші для швидкого доступу, використовуючи символи клавіатури за допомогою декількох методів:

  • setAlphabeticShortcut(char) - додає символ
  • setNumericShortcut(int) - додає число
  • setShortcut(char, int) - додає комбінацію символу та числа

Наприклад, якщо встановити гарячу клавішу setAlphabeticShortcut("q");, то при відкриванні меню (або при утримуванні клавіші MENU) натискання клавіші Qвибере пункт меню. Ця гаряча клавіша(або поєднання клавіш) буде показано як підказка, що відображає нижче ім'я пункту меню. У нових клавіатурах є окрема кнопка Ctrl, яка працює так само, як на звичайних клавіатурах.

Гарячі клавіші можна створити і через XML: android:alphabeticShortcut="c".

Обробляти натискання можна через метод активності onKeyShortcut():

@Override public boolean onKeyShortcut(int keyCode, KeyEvent event) ( switch (keyCode) ( case KeyEvent.KEYCODE_R: Toast.makeText(this, "Reply", Toast.LENGTH_SHORT).show(); return true; default: onKeyShortcut(keyCode, event); ) )

Створення підменю

Підменю можна додати до будь-якого меню, крім іншого підменю. Підменю створюється у методі зворотного виклику onCreateOptionsMenu()за допомогою методу addSubMenu(), який повертає об'єкт SubMenu. В об'єкт SubMenuможна додати додаткові пункти до цього меню, використовуючи метод add(). Наприклад:

Public static final int IDM_HELP = 101; public static final int IDM_NEW = 201; public static final int IDM_OPEN = 202; public static final int IDM_SAVE = 203; public static final int IDM_CUT = 301; public static final int IDM_COPY = 302; public static final int IDM_PASTE = 303; @Override public boolean onCreateOptionsMenu(Menu menu) ( SubMenu subMenuFile = menu.addSubMenu("Файл"); subMenuFile.add(Menu.NONE, IDM_NEW, Menu.NONE, "Новий"); subMenuFile.add(Menu.NONE, IDM_OP , Menu.NONE, "Відкрити"), subMenuFile.add(Menu.NONE, IDM_SAVE, Menu.NONE, "Зберегти"); , Menu.NONE, "Вирізати"), subMenuEdit.add(Menu.NONE, IDM_COPY, Menu.NONE, "Копіювати"); add(Menu.NONE, IDM_HELP, Menu.NONE, "Довідка"); return super.onCreateOptionsMenu(menu);) @Override : message = "Вибраний пункт Новий"; break; case IDM_OPEN: message = "Вибраний пункт Відкрити"; break; case IDM_SAVE: message = "Вибраний пункт Зберегти"; break; case IDM_COPY: message = "Вибраний пункт Копіювати"; break; case IDM_PASTE: message = "Вибраний пункт Вставити"; break; case IDM_HELP: message = "Вибраний пункт Довідка"; break; default: return false; ) // виводимо повідомлення про обраний пункт меню Toast toast = Toast.makeText(this, message, Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER, 0, 0); toast.show(); return true; )

Тепер під час вибору пункту меню з'явиться ще одне вікно з підменю. Спробуйте самі.

Додавання прапорців та перемикачів

До пунктів меню можливе додавання прапорців або перемикачів. Щоб додати прапорець або перемикач для окремого елементаменю, необхідно використовувати метод setCheckable():

MenuItem item = menu.add(0, IDM_FORMAT_BOLD, 0, "Bold"); item.setCheckable(true);

Якщо потрібно додати кілька пунктів меню з прапорцями або перемикачами, можна об'єднати їх у групи меню, створивши окремий ідентифікатор. Пункт меню додається до групи через метод add(), передавши йому як перший параметр ідентифікатор групи меню. Допустимо, ми оголосили ідентифікатори для групи меню Колір та елементів меню для встановлення кольору:

Public static final int IDM_COLOR_GROUP = 400; public static final int IDM_COLOR_RED = 401; public static final int IDM_COLOR_GREEN = 402; public static final int IDM_COLOR_BLUE = 403;

Тепер для створення групи меню з прапорцями потрібно призначити ідентифікатор групи на кожен пункт меню та викликати метод setGroupCheckable()для всієї групи (у цьому випадку немає необхідності викликати метод setCheckable()для кожного пункту меню):

SubMenu subMenuColor = menu.addSubMenu("Колір"); subMenuColor.add(IDM_COLOR_GROUP, IDM_COLOR_RED, Menu.NONE, "Червоний"); subMenuColor.add(IDM_COLOR_GROUP, IDM_COLOR_GREEN, Menu.NONE,"Зелений"); subMenuColor.add(IDM_COLOR_GROUP, IDM_COLOR_BLUE, Menu.NONE, "Синій"); subMenuColor.setGroupCheckable(IDM_COLOR_GROUP, true, false);

У методу setGroupCheckable()три параметри:

  • перший параметр – ідентифікатор групи меню;
  • другий параметр - true, якщо групі дозволені перемикачі чи прапорці;
  • третій параметр - встановлює єдиний (true) чи множинний (false) вибір пунктів меню. Цей параметр фактично визначає вигляд меню - це буде меню з перемикачами або прапорцями.

    Для керування станом прапорців та перемикачів у обробнику події вибору пункту меню потрібно написати наступне:

    @Override public boolean onOptionsItemSelected(MenuItem item) ( CharSequence message; "; break; default: return false; )

    Запустіть проект, викличте меню та виберіть пункт меню Колір. У вас з'явиться підменю із трьома пунктами (Червоний, Зелений, Синій) у вигляді прапорців. Стан прапорців та перемикачів обробляється в коді програми та зберігається при повторних викликах меню.

    Можна відразу призначити намір вибраному пункту меню через метод setIntent(), який спрацює при натисканні цього пункту, якщо ця подія не була перехоплена обробниками onMenuItemClickListener (устар.) або onOptionsItemSelected. Спрацювавши, намір передається в метод StartActivity.

    MenuItem.setIntent(new Intent(this, MyOtherActivity.class));

    Програмне відкриття або закриття меню

    Якщо вам з якихось причин потрібно програмно відкрити меню (наприклад, з демонстраційною метою), то використовуйте метод openOptionsMenu():

    OpenOptionsMenu();

    Для програмного закриття меню використовуйте метод closeOptionsMenu()втім у мене повторний виклик методу openOptionsMenu()також закриває меню.

    Програмне видалення пункту меню

    Допустимо, ми визначили пункт меню в xml-файлі:

    Щоб видалити зайвий пункт меню з нашої програми про котів, потрібно отримати доступ до пункту меню через метод findItem()і зробити його невидимим. Посилання на об'єкт Menu потрібно передати до методу onCreateOptionsMenu, щоб програма дізналася про зміну складу меню.

    // Змінна класу Menu menu; @Override public boolean onCreateOptionsMenu(Menu menu) ( super.onCreateOptionsMenu(menu); // передаємо посилання на наш об'єкт this.menu = menu; getMenuInflater().inflate(R.menu.test, menu); return true; ) / / клацання кнопки public void onClick(View v) ( if (menu != null) ( // знаходимо потрібний елемент MenuItem item_dog = menu.findItem(R.id.action_dog); // робимо його невидимим item_dog.setVisible(false); )

    Але у цього рішенняє недолік, якщо ми повернемо екран, активність перествориться і віддалене меню знову з'явиться. Як же нам позбутися сранного песика?

    Треба запам'ятати стан пункту меню та зберегти його в об'єкті типу Bundle у методі назаписідержави, а в методі onCreate()витягти збережений стан і передати методу onPrepareOptionsMenu, що викликається перед показом меню на екрані:

    Package uk.alexanderklimov.test; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; public class TestActivity extends Activity ( Menu menu; Boolean savedMenuDogIsVisible; final static String KEY_MENU_DOG = "KEY_MENU_DOG"; @Override public void onCreate(Bundle savedInstanceState) ( super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); // извлекаем дані про видимість пункту меню if (savedInstanceState != null) ( savedMenuDogIsVisible = savedInstanceState.getBoolean(KEY_MENU_DOG, true); ) ) @Override ter ().inflate(R.menu.test, menu); return true; ) public void onClick(View v) ( if (menu != null) ховаємо пункт меню item_dog.setVisible(false); ) ) @Override protected void onSaveInstanceState(Bundle outState) ( // TODO Auto-generated method stub super.onSaveInstanceState(outState); if (menu != null) ( MenuItem i. findItem(R.id.action_dog);// зберігаємо поточний стан пункту меню - true або false outState.putBoolean(KEY_MENU_DOG, item_dog.isVisible()); ) ) @Override public boolean onPrepareOptionsMenu(Menu menu) ( if (savedMenuDogIsVisible != null) ( MenuItem item_dog = menu.findItem(R.id.action_dog); // перед виведенням на екран дізнаємося потрібний стан пункту меню item_do ); ) return super.onPrepareOptionsMenu(menu); ) )

    Визначити наявність кнопки Menu

    На старих пристроях використовувалася кнопка Menu. У нових версіях Androidменю прибрали в ActionBar та її наявність у вигляді окремої кнопки стала необов'язковою. Але багато виробників, як і раніше, випускають телефони з кнопкою для меню. Щоб визначити, чи є така кнопка, Android 14 додали новий метод, який дозволить визначити наявність цієї кнопки.

    If (Build.VERSION.SDK_INT<= 10 || (Build.VERSION.SDK_INT >= 14 && ViewConfiguration.get(this) .hasPermanentMenuKey())) ( // Menu key is present Toast.makeText(this, "Кнопка Menu є", Toast.LENGTH_LONG).show(); ) else ( // No menu key Toast.makeText(this, "Кнопки Menu немає", Toast.LENGTH_LONG).show();

    Розмітка для меню

    У сучасних пристрояхменю є частиною ActionBar. І можна налаштувати розмітку меню через XML.

    Припустимо, ви вибрали такий варіант:

    В атрибуті showAsActionне використовуйте значення never, інакше розмітку не побачите. Сама розмітка задана через атрибут actionLayout. Код для розмітки:

    Меню у фрагментах

    Меню може бути не лише частиною активності, а й частиною фрагмента. Принцип роботи практично не відрізняється. Фрагмент має відповідний метод.

    @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) ( super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.fragment_crime_list, menu); )

    FragmentManagerвідповідає за виклик onCreateOptionsMenu()при отриманні активністю зворотного дзвінка onCreateOptionsMenu()від системи. Ви повинні явно повідомити менеджера FragmentManager, що фрагмент повинен отримати виклик onCreateOptionsMenu(). Для цього викликається метод setHasOptionsMenu():

    // У коді фрагмента @Override public void onCreate(Bundle savedInstanceState) ( super.onCreate(savedInstanceState); setHasOptionsMenu(true); getActivity().setTitle(R.string.cat); ... )

Виробники смартфонів на Андроїд для тестування пристроїв впроваджують та використовують інженерне меню. У ньому містяться всілякі тести та налаштування апарата, недоступні пересічним користувачам. Однак сьогодні, знаючи USSD-команду або завантаживши програму з PlayMarket, зайти в інженерне меню може будь-хто.

Навіщо потрібне приховане інженерне меню в Андроїд

Інженерне меню ( Engineering Mode) – за своєю суттю прихований додаток, яке використовують розробники для тестування та встановлення оптимальних параметрів мобільного телефонаабо планшет. Фахівці перевіряють роботу датчиків та за необхідності вносять коригування у функціонування системних компонентів.

Працюючи з технічним меню Android, будьте обережні - зміна частини функцій призводить до збоїв у роботі пристрою.

Як увійти в меню

Щоб відкрити меню, встановлене виробником, активуйте на смартфоні панель набору номера та введіть одну з представлених у таблиці USSD-команд. Після введення команди цифри зникнуть з екрана, а замість них відкриється меню.

Таблиця: комбінації для запуску Engineering Mode

Виробник пристрою Команда
Sony *#*#7378423#*#*
*#*#3646633#*#*
*#*#3649547#*#*
Philips *#*#3338613#*#*
*#*#13411#*#*
ZTE, Motorola *#*#4636#*#*
HTC *#*#3424#*#*
*#*#4636#*#*
*#*#8255#*#*
Samsung *#*#197328640#*#*
*#*#4636#*#*
*#*#8255#*#*
Prestigio *#*#3646633#*#*
LG 3845#*855#
Huawei *#*#2846579#*#*
*#*#14789632#*#*
Alcatel, Fly, Texet *#*#3646633#*#*
Смартфони та планшети з процесором MediaTek (більшість китайських апаратів) *#*#54298#*#*
*#*#3646633#*#*
Acer *#*#2237332846633#*#*

Відео: як працювати в Engineer Mode

Якщо код не діє, та стандартним способомзапустити сервісне меню не вдається, використовуйте сторонні програми- Завантажити їх можна на PlayMarket. Рекомендовані програми - "Запуск інженерного меню МТК", Mobileuncle Tools, Shortcut Master.

Меню виробників не працює на деяких моделях пристроїв з Android 4.2 JellyBean (x.x.1, x.x.2), а також Android 5.1 Lollipop. Також недійсне меню при встановленій прошивці Cyanogen Mod. В Android 4.4.2 при перезавантаженні скидаються зміни, зроблені в додатку.

"Запуск інженерного меню МТК"

Програма дозволяє відкрити та налаштувати інженерне меню без набору цифрових команд. Коректно працює на процесорах MediaTek (МТ6577, МТ6589 та ін.) та системами Android 2.x, 3.x, 4.x, 5.x. За відгуками користувачів, програма успішно виконує свої функції, але після перезавантаження смартфона відбувається скидання налаштувань, зроблених за допомогою програми.

Програма Mobileuncle Tools

Функціонал програми аналогічний попередньому, але, крім доступу до інженерного меню, користувач отримує можливість переглянути інформацію про екран, сенсор і пам'ять пристрою, а також оновити прошивку, відновити IMEI-номер і покращити GPS. Для стабільного функціонування потрібні root-права.

Утиліта Shortcut Master

Програма Shortcut Master призначена для роботи з ярликами та системними програмами: створення, пошуку, видалення. Прямої функції входу в інженерне меню немає. Але з її допомогою ви можете переглянути список секретних команд, що діють на пристрої. А натиснувши на назву команди, побачите меню, в якому буде пункт «виконати». Зручно і не вимагає зайвих дій.

Root-права для доступу до інженерного меню

Щоб потрапити в сервісне меню на деяких версіях Андроїд, користувач повинен мати права суперкористувача (root). Отримати права можна за допомогою спеціалізованих програм: Farmaroot, UniversalAndRoot, Romaster SU та інших. Щоб отримати Root-доступ до пристрою за допомогою Farmaroot:

  1. Встановіть та запустіть у програму. Посилання в Google Play: https://play.google.com/store/apps/details?id=com.farmaapps.filemanager&hl=ua.
  2. Якщо програма підтримує встановлення root-прав на ваш пристрій, то на екрані ви побачите список можливих дій, серед них – «Отримати root». Виберіть цей пункт.
  3. Виберіть один із встановлених методів отримання root.
  4. Програма розпочне встановлення.
  5. Після закінчення процедури ви побачите повідомлення про успішне встановлення root доступу.

Можливі проблеми та рішення:

  • програма закрилася на середині установки - перезапустіть апарат і спробуйте знову;
  • root-права не встановилися - спробуйте встановити іншим методом (виберіть новий експлоїт у додатку).

Що можна настроїти в меню

Зовнішній вигляд інженерного режиму та можливості налаштування параметрів можуть відрізнятися в залежності від моделі планшета або смартфона. У меню користувачі найчастіше регулюють звук, змінюють налаштування камери та використовують режим відновлення. Параметри для коригування та порядок дій наведено нижче. Будьте уважні – назви пунктів меню можуть відрізнятися у різних моделях пристроїв! Ви дієте на свій страх та ризик.

Аудіо: посилити рівень гучності

Якщо ваш телефон дзвонить недостатньо голосно, в інженерному меню знайдіть розділ Audio та перейдіть до LoudSpeaker Mode. Виберіть Ring. Для кожного рівня сигналу (level 1–6) змініть значення - виставте цифри зростання, від 120 до 200. Збільште значення в пункті Max. Vol - максимальне 200. Натисніть кнопку SET, щоб зберегти налаштування.

Аудіо: підвищити гучність телефонної розмови

Щоб посилити тон динаміка для розмов, у розділі сервісного меню Audio виберіть Normal mode та відкрийте Sph. Встановіть значення рівнів сигналу (level 1–6) від 100 до 150, а цифру у Max. Vol. - До 160.

Для посилення чутливості мікрофона пройдіть у меню Audio – Normal mode – Mic. Для кожного рівня надайте однакові значення чутливості мікрофона, наприклад, 200. Натисніть кнопку SET, виконайте перезавантаження і перевірте, чи співрозмовник став чути вас краще.

Відео: регулювання параметрів звуку в інженерному меню

Батарея: відключення частот, які не використовуються.

Смартфони швидко витрачають ресурс батареї на роботу додатків, підтримка стільникового зв'язкуі мережеві підключення. За допомогою інженерного меню можна збільшити тривалість роботи акумулятора.

Сучасні пристрої сканують кілька GSM-частот - 900/1800 МГц та 850/1900 МГц. У Росії її діє пара 900/1800 МГц, отже, немає необхідності сканувати мережу інших частотах. Радіосигнал для другої пари можна вимкнути, що суттєво заощадить рівень заряду.

У Engineer Mode відкрийте Band Mode. Вимкніть частоти, що не використовуються, знявши галочки з відповідних пунктів - PCS1900 і GSM850. Якщо апарат підтримує дві сім-картки, відкрийте по черзі пункти SIM1 та SIM2 і виконайте вказані дії в кожному. Натисніть кнопку SET, щоб зберегти налаштування.

Якщо смартфон та сім-карта працюють у 3G-мережах, відключіть мережі, які не використовуються в Росії: WCDMA-PCS 1900, WCDMA-800, WCDMA-CLR-850. Натисніть кнопку SET знову.

Увімкнути сканування вимкнених мереж можна, повернувшись у те саме меню і встановивши галочки.

Камера: налаштування фото та відео

За замовчуванням апарати на Android зберігають знімки в форматі JPEG. Тим часом фотографи воліють знімати та обробляти матеріал у RAW, щоб отримати більше можливостей для редагування. Технічне меню дозволяє вибрати бажаний формат знімків.

У меню знайдіть Camera і виберіть Capture Type (Тип знімка). Встановіть формат фото - RAW та натисніть SET. також в меню Cameraможна збільшити розмір знімків, встановити значення ISO, включити зйомку HDR для більш високої деталізації фото, задати частоту кадрів для відео. Після зміни кожного параметра не забувайте натискати SET, щоб зберегти налаштування.

Режим відновлення

Recovery Mode (Режим відновлення) – аналог Bios на комп'ютері, що дозволяє керувати пристроєм без входу в систему Android. Можливості режиму відновлення:

  • обнулення налаштувань до стандартних;
  • оновлення прошивки;
  • доступ до root-прав;
  • створення резервної копіїОС;
  • видалення персональних даних із системи.

У Recovery Mode не виконуйте дію, якщо не впевнені, до чого вона приведе. Деякі команди можуть зашкодити пристрою та системі.

Якщо налаштування не збереглися

Користувачі, які отримали доступ до технічного меню, скаржаться на те, що змінені параметри не активуються або скидаються при перезапуску апарата.

Для введення в дію налаштувань після зміни параметрів робіть тап на кнопку SET внизу екрана. Якщо параметри скидаються після перезавантаження пристрою, спробуйте зайти в технічне меню не через програму, а за допомогою цифрової команди.

Коди сервісу апаратів на Андроїд

Крім технічного меню, керувати функціоналом смартфонів на Android дозволяють секретні USSD-коди – поєднання цифр та символів, набравши які користувач виконує дію. Секретні коди для різних пристроївнаведено у таблиці.

Таблиця: список секретних команд для Android

Виробник Цифрова команда Значення
Коди для більшості виробників *#*#7780#*#* Відкат налаштувань та деінсталяція власних додатків
*2767*3855# Зміна прошивки, тотальний відкат налаштувань.
*#*#232339#*#*
*#*#526#*#*
Перевірка безпроводових підключень
*#*#34971539#*#* Детальні відомості про фотокамеру
*#*#232338#*#* Перегляд адреси Wi-fi
*#*#273283*255*663282*#*#* Активація резервної копії медіа на телефоні
*#*#1472365#*#* Експрес-тест GPS
*#*#0*#*#* Перевірка екрану
*#*#2663#*#* Перегляд інформації про тачскрін
*#*#2664#*#* Тестування тачскріну
*#*#4636#*#* Загальні дані пристрою та батареї
*#*#0673#*#*
*#*#0289#*#*
Аудіотести
*#*#7262626#*#* Перевірка прийому GSM
*#*#0842#*#* Тест вібросигналу та яскравості дисплея
*#*#3264#*#* Інформація про RAM-пам'ять
*#*#232331#*#* Тестування Bluetooth
*#*#8255#*#* Перевірка Google Talk
*#*#232337#*#* Інформація про адресу Bluetooth
*#*#1234#*#* Дані прошивки апарату
*#*#44336#*#* Дата складання пристрою
*#06# Інформація про номер IMEI
*#*#197328640#*#* Тест сервісної активності
*#*#1111#*#* Версія free-to-air програм
*#*#2222#*#* Номер заліза для free-to-air
*#*#0588#*#* Перевірка датчика наближення
Sony (на апаратах діють єдині команди) **05***# Зняття блокування з PUK-коду
Motorola *#06# IMEI
*#*#786#*#* Відкат налаштувань до початкових
*#*#1234#*#* *#*#7873778#*#* Відкриття програм з root-правами
*#*#2432546#*#* Перевірка наявності оновлень
*#*#2486#*#* Вхід до сервісного меню
HTC *#*#4636#*#* Сервісне меню
##3282# Системний додаток EPST
*#*#8255#*#* G-Talk монітор
##33284# Стан мережі
*#*#3424#*#* Тест функціоналу
##3424# Діагностика пристрою
##7738# Діагностика протоколу
##8626337# Voice Coder
Samsung (ефективні загальні коди) ##778 (+дзвінок) Активація меню EPST
LG (роботу з кодами замінює технічне меню) 3845#*855# Міжнародні пристрої
3845#*400# Китайські апарати
5689#*990# Sprint
##228378 (+ виклик) Verizon Wireless
3845#*851# T-Mobile
3845#*850# AT&T

Якщо з якоїсь причини сервісний код не спрацював, не засмучуйтеся - встановіть та запустіть програму Secret Codes (Посилання в Google Play: https://play.google.com/store/apps/details?id=fr.simon.marquis). secretcodes&hl=ru). Програма проаналізує комбінації, що діють у пристрої, і запропонує вам список. Активувати комбінацію можна безпосередньо в додатку одним натисканням на назву.