Jak zrobić menu na Androidzie. Jak rozwinąć menu zamykania Androida. Zmiana wskaźnika baterii

Stwórzmy więc dzisiaj proste menu dla aplikacji na Androida. Stwórzmy nowy projekt. Nazwijmy to Mymenu i kliknij Dalej. Wybierzmy Pustą aktywność. Kliknij Zakończ.

System studyjny Android przygotuje dla nas nowy projekt, przejdźmy do skryptów stopniowych. W Build gradle dodamy nową implementację. Będziemy potrzebować paczki

implementacja „com.android.support:design:26.0.0-beta1”

Przynajmniej w moim projekcie. Kliknij synchronizuj projekt.

Elementy menu

Przejdźmy do folderu Res i utwórz w nim nowy folder zasobów Andriod z typem zasobu - menu. W nim utworzymy nowy plik menu zasobów. Nadajmy plikowi taką samą nazwę jak nazwa folderu - menu.

Dodaj 3 pozycje menu do naszego menu głównego, przeciągając i upuszczając.

W pliku strings.xml napiszemy nowe nazwy pozycji menu, tworząc dla nich dodatkowe wartości stringowe.

Niech element 1 będzie elementem 1, element 2 będzie elementem 2 i niech element 3 będzie elementem wyjściowym.

Ustęp 1 Punkt 2 Wyjście

W wersji tekstowej menu.xml naszym elementom będziemy przypisywać nazwy z pliku strings.xml. Również dla każdego elementu dodamy Android:id o nazwie akcja1, akcja2, akcja3,

współdziałać z tymi punktami. Akcja numer 1 będzie odpowiedzialna za coś, jakąś reakcję, naciśnięcie elementu Akcja 2 odpowiednio będzie odpowiedzialna za inne akcje, Akcja 3 będzie odpowiedzialna za wyjście z aplikacji.

W pliku MainActivity napiszemy kilka funkcji do pracy z menu:

onCreateOptionsMenu @Override publiczna wartość logiczna onCreateOptionsMenu(menu)( getMenuInflater().inflate(R.menu.menu, menu); return true; ) onOptionsItemSelected @Override publiczna wartość logiczna onOptionsItemSelected(pozycja MenuItem)( int id = item.getItemId(); przełącznik (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); wykończenie(); return true; ) return super.onOptionsItemSelected(item); )

Zadeklarujmy zmienną typu TextView txt i powiążmy ją z elementem TextView w onCreate poprzez

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

w układzie Activity_main.xml, dodając do niego

android:id="@+id/txt"

aby wyświetlić tekst.

Uruchommy naszą aplikację w emulatorze. Jak widać, pojawiają się pozycje menu; po kliknięciu wartości Pozycja 1 lub 2 tekst zmienia się na Pozycja 1 lub Pozycja 2, po kliknięciu przycisku Wyjdź pojawia się tekst Wyjdź i aplikacja zostaje zamknięta.

Układ menu

Wszystko wydaje się być w porządku. Jednak jak zawsze w Android Studio, to menu będzie działać tylko na emulatorze, dlatego do pliku Style.xml dodamy mały kod, a wcześniej zmienimy plik AndroidManifest.xml

android:theme="@style/Motyw aplikacji"

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

który mówi, że nowy styl nie zawiera ActionBar. Dodamy także zmienną paska narzędzi typu ToolBar do MainActivity onCreate. Zdefiniujmy to za pomocą paska narzędzi = (Toolbar)findViewById(R.id.toolbar) i włączmy obsługę setSupportActionBar(toolbar).

W układzie Activity_main.xml przed TextView dodaj następujący kod:

Połączmy te widgety z importem naszej aplikacji.

importuj android.support.v7.widget.Toolbar;

Naciśnij Alt+Enter, a my dodamy i zaktualizujemy import naszej aplikacji. Aby połączyć widżet, może być konieczne wykonanie tej czynności kilka razy. Kliknij Zapisz.

Teraz możemy uruchomić naszą aplikację w emulatorze. Wszystko wygląda dokładnie tak samo, jednak bez tego kodu nie można zainstalować naszej aplikacji na prawdziwym urządzeniu. Zróbmy podpisany wniosek.

Pierwszy miesiąc szkolenia. Przyjrzyjmy się bliżej pracy z menu. Pod uwagę brane będą zarówno stare urządzenia z systemem Android 2.3, jak i nowe telefony z systemem Android 4.0.

Menu opcji

Za menu odpowiedzialna jest klasa Android.view.Menu. Każde działanie jest powiązane z jednym obiektem menu. Samo menu zawiera elementy menu (klasa android.view.MenuItem) i podmenu (klasa Android.view.SubMenu).

Po naciśnięciu przycisku Menu na starszych telefonach pojawia się zestaw elementów menu dołączonych do działania. Menu może zawierać ikony. Takie menu może zawierać (zwykle) sześć pozycji. Jeżeli pozycji jest więcej niż sześć, stosowane jest menu rozszerzone – w tym przypadku zamiast szóstej pozycji pojawia się pozycja Opcje(Więcej). Po kliknięciu tej pozycji wyświetli się rozwinięte menu z listą pozycji, które nie mieszczą się w głównej części menu opcji.

Po pierwszym otwarciu menu system Android wywołuje metodę onCreateOptionsMenu(), przekazując obiekt jako parametr Menu. Menu można tworzyć jako zasoby w pliku XML lub można skorzystać z tej metody dodać().

W standardowym projekcie przy wyborze zwykłego szablonu istnieje już szablon menu z jedną pozycją Ustawienia i wywołanie metody dla menu (już o tym wiesz).

Tworzenie menu przy użyciu zasobów

Przyjrzyjmy się pracy z menu poprzez zasoby. Do stworzenia menu wykorzystywane są zasoby, które muszą być zapisane w pliku XML. Sam plik musi znajdować się w folderze res/menu/ Twój projekt. Menu składa się z następujących elementów:

Definiuje menu, które będzie zawierać elementy menu. Element musi być elementem głównym w strukturze pliku XML i może zawierać jeden lub więcej elementów I Bezpośrednio tworzy elementy menu. Ten element może mieć element zagnieżdżony aby utworzyć podmenu Jeśli chcesz, możesz również użyć niewidocznego pojemnika na elementy . Pozwala to osiągnąć pewne efekty

Załóżmy, że decydujemy się na użycie menu w jakiejś grze. Utwórzmy nowy plik menu_gry.xml:

Stworzyliśmy menu składające się z dwóch pozycji. Każdy element zawiera następujące atrybuty:

Android:id Identyfikator pozycji menu rozpoznawany przez aplikację, gdy użytkownik wybierze pozycję menu. Android:title Tekst, który będzie wyświetlany w menu

Istnieją inne atrybuty elementu przedmiot, Na przykład android:icon="@drawable/home" umożliwi także wyświetlenie ikony elementu menu oraz android:enabled="false" pozwala na zablokowanie pozycji menu.

Atrybut android:tytułSkondensowany stosuje się, jeśli zwykły tytuł jest zbyt szeroki i „nie mieści się” w wybranej pozycji menu.

Atrybut android:orderInCategory Określa kolejność wyświetlania MenuItems.

Tworząc menu wskazywaliśmy na zasoby stringowe @string/nowa_gra I @string/pomoc. Do pliku należy dodać nowe linie strings.xml:

Nowa gra Odniesienie

Teraz należy dokonać zmian w klasie aktywności, w której będzie wyświetlane menu. Program musi przekonwertować utworzony przez nas zasób menu na obiekt programu. W tym celu istnieje specjalna metoda MenuInflater.inflate() który jest wywoływany w specjalnej metodzie wywołania zwrotnego onCreateOptionsMenu(). Ta metoda ma na celu wyświetlenie menu po naciśnięciu przycisku. MENU Na urządzeniu:

@Override publiczna wartość logiczna onCreateOptionsMenu(menu Menu) ( MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.game_menu, menu); return true; )

Po wklejeniu kodu środowisko programistyczne poprosi Cię o zaimportowanie brakujących przestrzeni nazw.

Importuj android.view.Menu; importuj android.view.MenuInflater;

metoda onCreateOptionsMenu() Metoda inicjuje pierwsze pojawienie się menu na ekranie i jako parametr przyjmuje obiekt Menu (dla starszych urządzeń). Możesz zapisać link do menu i używać go w dowolnym miejscu kodu, o ile jest to metoda onCreateOptionsMenu() nie zostanie ponownie wezwany. Powinieneś zawsze używać implementacji tego modułu obsługi z klasy nadrzędnej, ponieważ w razie potrzeby automatycznie włącza on dodatkowe elementy systemowe w menu. Na nowszych urządzeniach metoda jest wywoływana podczas tworzenia działania. Metoda musi zwracać wartość PRAWDA aby menu było widoczne na ekranie.

Po uruchomieniu programu kliknij przycisk MENU na emulatorze, aby zobaczyć utworzone menu.

metoda getMenuInflater() zwraca instancję klasy MenuInflator, którego używamy do odczytu danych menu z XML.

Jak widać menu pojawia się na dole ekranu. Jednocześnie można wyświetlić sześć pozycji menu. Jeśli punktów jest więcej, wyświetli się pięć punktów plus szósty punkt Więcej, co pozwoli Ci zobaczyć pozostałe elementy. Sprawdźmy i dodajmy nowe pozycje menu.

Najpierw dodajmy sześć punktów.

Dodajmy jeszcze jedną pozycję do menu, aby było ich siedem.

Wybieranie pozycji menu

Nauczyliśmy się tworzyć menu. Ale na razie jest to bezużyteczne, ponieważ pozycje menu w żaden sposób nie reagują na nasze kliknięcia. Aby przetworzyć kliknięcia pozycji menu, użyj metody onOptionsItemSelected(). Metoda rozpoznaje wybrany przez użytkownika element poprzez Pozycja w menu. Wybrany element możemy teraz określić poprzez połączenie getItemId(), która zwraca identyfikator elementu menu. Dalej przez operatora przełącznik Jedyne, co musimy zrobić, to zdefiniować niezbędne polecenia:

@Override public boolean onOptionsItemSelected(MenuItem item) ( // Operacje na przełączniku wybranego elementu menu (item.getItemId()) ( case R.id.new_game: newGame(); return true; case R.id.help: showHelp( ) ; return true; domyślnie: return super.onOptionsItemSelected(item); ) ) public void newGame() ( edtext.setText("Wybrano nową grę"); ) public void showHelp() ( edtext.setText("Wybrano pomoc" ) ;)

Uruchom aplikację, wywołaj menu i wybierz pierwszą lub drugą pozycję menu. W polu tekstowym powinien pojawić się komunikat.

W podanym przykładzie getItemId()żąda identyfikatora wybranego elementu menu i rozpoczyna porównanie instrukcji wyboru przełącznika z identyfikatorami określonymi w zasobach XML. Po znalezieniu wymaganego identyfikatora wykonywana jest procedura obsługi określonego elementu menu. Jeśli program niczego nie wykryje, instrukcja jest wykonywana domyślny co zwraca super klasę.

W systemie Android 3.0 możesz dodać atrybut Android: po kliknięciu w menu zasobów i nie musisz już z niego korzystać onOptionsItemSelected(). Z pomocą Android: po kliknięciu możesz określić żądaną metodę podczas wybierania pozycji menu.

// atrybut pozycji menu jest ustawiony na android:onClick="onMenuClick" public void onMenuClick(MenuItem item)( edtext.setText("Podaj wybrany element kota"); )

Programowe tworzenie menu

Aby dokończyć obraz, spójrzmy na tworzenie menu oprogramowania. Będziemy musieli zdefiniować kilka stałych dla pozycji menu:

// identyfikatory pozycji menu private static final int IDM_OPEN = 101; prywatny statyczny końcowy int IDM_SAVE = 102; public boolean onCreateOptionsMenu(menu) ( // dodaj pozycje menu menu.add(Menu.NONE, IDM_OPEN, Menu.NONE, "Otwórz"); menu.add(Menu.NONE, IDM_SAVE, Menu.NONE, "Zapisz") ;)

Metoda dodać() istnieją cztery parametry:

  • identyfikator grupy - umożliwia powiązanie pozycji menu z grupą innych pozycji w tym menu
  • Identyfikator elementu procedury obsługi zdarzenia wyboru elementu menu
  • kolejność pozycji w menu - pozwala określić pozycję w menu. Domyślnie (Menu.NONE lub 0) pozycje są w kolejności określonej w kodzie
  • tytuł - tekst wyświetlany w pozycji menu. Możesz użyć zasobu ciągu

Metoda zwraca obiekt Pozycja w menu, za pomocą którego można ustawić dodatkowe właściwości, takie jak ustawienie ikony, klawisza skrótu itp.

Jeżeli chcesz stworzyć menu z ikonami to skorzystaj z metody ustawIkonę()

Menu.add(Menu.NONE, IDM_OPEN, Menu.NONE, „Otwórz”) .setIcon(R.drawable.icon_menu_open);

Przypomnijmy jeszcze raz, że ikony można dodać tylko do sześciu pozycji menu (lub pięciu, jeśli pozycji jest więcej niż sześć).

metoda w menu Utwórz opcje wywoływana przez system tylko raz podczas tworzenia menu. Jeśli chcesz zaktualizować menu podczas działania programu, użyj metody wywołania zwrotnego onPrepareOptionsMenu().

Po wybraniu pozycji menu wywoływana jest metoda onOptionsItemWybrany który mija obiekt Pozycja w menu- pozycja menu wybrana przez użytkownika. Korzystanie z metody pobierzIdprzedmiotu Możesz uzyskać identyfikator wybranej pozycji menu. Po zidentyfikowaniu pozycji menu możesz napisać kod obsługujący zdarzenie wyboru menu:

Publiczna wartość logiczna onOptionsItemSelected(element MenuItem) ( przełącznik (item.getItemId()) case IDM_OPEN: return true; case IDM_SAVE: return true; return false; )

Skróty klawiszowe

Możesz także ustawić klawisze skrótu umożliwiające szybki dostęp za pomocą symboli klawiatury, korzystając z kilku metod:

  • setAlphabeticShortcut(char) - dodaje znak
  • setNumericShortcut(int) - dodaje liczbę
  • setShortcut(char, int) - dodaje kombinację znaku i liczby

Przykładowo, jeśli ustawisz skrót klawiszowy setAlphabeticShortcut("q"); to po otwarciu menu (lub przytrzymując klawisz MENU) naciśnięcie klawisza Q wybierze tę pozycję menu. Ten klawisz skrótu (lub kombinacja klawiszy) zostanie wyświetlony jako podpowiedź wyświetlana pod nazwą pozycji menu. Nowe klawiatury mają oddzielny klawisz klawisz kontrolny, który działa tak samo jak na zwykłych klawiaturach.

Skróty klawiszowe można również tworzyć poprzez XML: android:alphabeticShortcut="c".

Możesz przetwarzać kliknięcia poprzez metodę działania onKeyShortcut():

@Override public boolean onKeyShortcut(int keyCode, zdarzenie KeyEvent) ( przełącznik (keyCode) ( case KeyEvent.KEYCODE_R: Toast.makeText(this, "Reply", Toast.LENGTH_SHORT).show(); return true; domyślnie: return super. onKeyShortcut(KodKlucza, zdarzenie); ) )

Tworzenie podmenu

Podmenu można dodać do dowolnego menu z wyjątkiem innego podmenu. Podmenu tworzone jest w metodzie wywołania zwrotnego onCreateOptionsMenu() za pomocą metody dodajPodMenu() która zwraca obiekt Podmenu. Sprzeciwiać się Podmenu możesz dodać dodatkowe elementy do tego menu za pomocą metody dodać(). Na przykład:

Publiczny statyczny końcowy int IDM_HELP = 101; publiczny statyczny końcowy int IDM_NEW = 201; publiczna statyczna finalna int IDM_OPEN = 202; publiczny statyczny końcowy int IDM_SAVE = 203; publiczny statyczny końcowy int IDM_CUT = 301; publiczny statyczny końcowy int IDM_COPY = 302; publiczny statyczny końcowy int IDM_PASTE = 303; @Override public boolean onCreateOptionsMenu(menu) ( SubMenu subMenuFile = menu.addSubMenu("Plik"); subMenuFile.add(Menu.NONE, IDM_NEW, Menu.NONE, "Nowy"); subMenuFile.add(Menu.NONE, IDM_OPEN , Menu.NONE, "Otwórz"); subMenuFile.add(Menu.NONE, IDM_SAVE, Menu.NONE, "Zapisz"); PodMenu subMenuEdit = menu.addSubMenu("Edycja"); subMenuEdit.add(Menu.NONE, IDM_CUT , Menu.NONE, „Wytnij”); subMenuEdit.add(Menu.NONE, IDM_COPY, Menu.NONE, „Kopiuj”); subMenuEdit.add(Menu.NONE, IDM_PASTE, Menu.NONE, „Wklej”); menu. add(Menu.NONE, IDM_HELP, Menu.NONE, "Pomoc"); return super.onCreateOptionsMenu(menu); ) @Override publiczna wartość logiczna onOptionsItemSelected(element MenuItem) ( Komunikat CharSequence; przełącznik (item.getItemId()) ( case IDM_NEW : komunikat = "Wybrano nowy element"; przerwa; case IDM_OPEN: komunikat = "Otwórz wybrany element"; przerwa; case IDM_SAVE: komunikat = "Zapisz wybrany element"; przerwa; case IDM_CUT: komunikat = "Wytnij wybrany element"; przerwa; case IDM_COPY: message = "Skopiuj wybrany element"; przerwa; case IDM_PASTE: message = "Wklej wybrany element"; przerwa; case IDM_HELP: message = "Wybrano element pomocy"; przerwa; domyślnie: zwróć fałsz; ) // wyświetl powiadomienie o wybranej pozycji menu Toast toast = Toast.makeText(this, message, Toast.LENGTH_LONG); toast.setGravity(Grawitacja.CENTRUM, 0, 0); toast.pokaż(); zwróć wartość true; )

Teraz, gdy wybierzesz pozycję menu, pojawi się kolejne okno z podmenu. Spróbuj sam.

Dodawanie pól wyboru i przycisków opcji

Do elementów menu możesz dodać pola wyboru lub przyciski opcji. Aby dodać pole wyboru lub przycisk radiowy dla pojedynczego elementu menu, należy skorzystać z metody setCheckable():

Element menu = menu.add(0, IDM_FORMAT_BOLD, 0, "Pogrubienie"); item.setCheckable(true);

Jeśli chcesz dodać kilka pozycji menu z polami wyboru lub przyciskami radiowymi, możesz połączyć je w grupy menu, tworząc oddzielny identyfikator. Pozycja menu jest dodawana do grupy przy użyciu tej metody dodać(), przekazując jej identyfikator grupy menu jako pierwszy parametr. Załóżmy, że zadeklarowaliśmy identyfikatory grupy menu Kolor i elementów menu w celu ustawienia koloru:

Publiczny statyczny końcowy int IDM_COLOR_GROUP = 400; publiczny statyczny końcowy int IDM_COLOR_RED = 401; publiczny statyczny końcowy int IDM_COLOR_GREEN = 402; publiczny statyczny końcowy int IDM_COLOR_BLUE = 403;

Teraz, aby utworzyć grupę menu z polami wyboru, musisz przypisać identyfikator grupy do każdej pozycji menu i wywołać metodę setGroupCheckable() dla całej grupy (w tym przypadku nie ma potrzeby wywoływania metody setCheckable() dla każdej pozycji menu):

SubMenu subMenuColor = menu.addSubMenu("Kolor"); subMenuColor.add(IDM_COLOR_GROUP, IDM_COLOR_RED, Menu.NONE, "Czerwony"); subMenuColor.add(IDM_COLOR_GROUP, IDM_COLOR_GREEN, Menu.NONE,"Zielony"); subMenuColor.add(IDM_COLOR_GROUP, IDM_COLOR_BLUE, Menu.NONE, "Niebieski"); subMenuColor.setGroupCheckable(IDM_COLOR_GROUP, prawda, fałsz);

Metoda setGroupCheckable() trzy parametry:

  • pierwszy parametr to identyfikator grupy menu;
  • drugi parametr ma wartość true, jeśli w grupie dozwolone są przyciski opcji lub pola wyboru;
  • trzeci parametr - ustawia pojedynczy (prawda) lub wielokrotny (fałsz) wybór pozycji menu. To ustawienie faktycznie określa wygląd menu - będzie to menu z przyciskami opcji lub polami wyboru.

    Aby kontrolować stan pól wyboru i przycisków opcji w obsłudze zdarzeń wyboru pozycji menu, należy napisać co następuje:

    @Override public boolean onOptionsItemSelected(MenuItem item) ( Komunikat CharSequence; switch (item.getItemId()) ( ... case IDM_COLOR_RED: // odwróć stan pola wyboru item.setChecked(!item.isChecked()); message = „Kolor czerwony”; przerwa; domyślnie: zwróć fałsz; )

    Uruchom projekt, wywołaj menu i wybierz element menu Kolor. Będziesz mieć podmenu z trzema pozycjami (czerwony, zielony, niebieski) w formie pól wyboru. Stan checkboxów i przełączników jest przetwarzany w kodzie programu i zapisywany przy ponownym wywołaniu menu.

    Możesz natychmiast przypisać intencję do wybranego elementu menu za pomocą metody setIntent(), która zostanie uruchomiona po kliknięciu elementu, jeśli zdarzenie to nie zostało przechwycone przez moduły obsługi onMenuItemClickListener (przestarzałe) lub onOptionsItemSelected. Po uruchomieniu intencja jest przekazywana do metody startActivity.

    MenuItem.setIntent(nowy zamiar(to, MyOtherActivity.class));

    Miękkie otwieranie lub zamykanie menu

    Jeśli z jakiegoś powodu musisz programowo otworzyć menu (na przykład w celach demonstracyjnych), użyj tej metody otwórzOpcjeMenu():

    OtwórzOpcjeMenu();

    Aby programowo zamknąć menu, użyj metody zamknijOpcjeMenu(), jednak mam wielokrotne wywołanie metody otwórzOpcjeMenu() zamyka również menu.

    Programowe usuwanie elementu menu

    Załóżmy, że zdefiniowaliśmy pozycję menu w pliku xml:

    Aby usunąć oczywiście niepotrzebną pozycję menu z naszego programu o kotach, musisz uzyskać dostęp do pozycji menu za pomocą metody znajdźprzedmiot() i uczynić go niewidocznym. Do metody należy przekazać referencję do obiektu Menu w menu Utwórz opcje aby program wiedział o zmianach w składzie menu.

    // zmienna klasowa Menu menu; @Override public boolean onCreateOptionsMenu(Menu menu) ( super.onCreateOptionsMenu(menu); // przekaż link do naszego obiektu this.menu = menu; getMenuInflater().inflate(R.menu.test, menu); return true; ) / / przycisk kliknij public void onClick(View v) ( if (menu != null) ( // znajdź żądany element MenuItem item_dog = menu.findItem(R.id.action_dog); // uczyń go niewidocznym item_dog.setVisible(false ); ) )

    Ale to rozwiązanie ma wadę: jeśli obrócimy ekran, czynność zostanie odtworzona i ponownie pojawi się usunięte menu. Jak możemy pozbyć się tego pieprzonego psa?

    Musimy zapamiętać stan pozycji menu i zapisać go w obiekcie typu Bundle w metodzie onSaveInstanceState i w metodzie onCreate() pobierz zapisany stan i przekaż go do metody w menu opcji przygotowania, który jest wywoływany przed wyświetleniem menu na ekranie:

    Pakiet ru.alexanderklimov.test; importuj android.app.Activity; importuj pakiet android.os.Bundle; importuj android.view.Menu; importuj android.view.MenuItem; importuj android.view.View; klasa publiczna TestActivity rozszerza działanie ( menu; wartość logiczna zapisaneMenuDogIsVisible; końcowy ciąg statyczny KEY_MENU_DOG = "KEY_MENU_DOG"; @Override public void onCreate(Bundle zapisanyInstanceState) ( super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); // pobierz dane dotyczące widoczności elementu menu if (savedInstanceState != null) ( zapisaneMenuDogIsVisible = zapisaneInstanceState.getBoolean(KEY_MENU_DOG, true); ) ) @Override public boolean onCreateOptionsMenu(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); // ukryj pozycja menu item_dog.setVisible(false); ) ) @Override chroniony void onSaveInstanceState(Bundle outState) ( // TODO Automatycznie wygenerowany skrót metody super.onSaveInstanceState(outState); if (menu != null) ( MenuItem item_dog = menu. findItem(R.id.action_dog); // zapisz aktualny stan pozycji menu - prawda lub fałsz outState.putBoolean(KEY_MENU_DOG, item_dog.isVisible()); ) ) @Override public boolean onPrepareOptionsMenu(Menu) ( if (savedMenuDogIsVisible != null) ( MenuItem item_dog = menu.findItem(R.id.action_dog); // przed wyświetleniem sprawdzamy pożądany stan pozycji menu item_dog .setVisible(savedMenuDogIsVisible ); ) return super.onPrepareOptionsMenu(menu); ) )

    Wykryj obecność przycisku Menu

    Starsze urządzenia korzystały z prawdziwego przycisku Menu. W nowych wersjach Androida menu zostało usunięte z ActionBara, a jego obecność jako osobnego przycisku stała się opcjonalna. Jednak wielu producentów nadal produkuje telefony z przyciskiem menu. Aby ustalić, czy taki przycisk istnieje, w Androidzie 14 dodano nową metodę, która będzie określać obecność tego przycisku.

    Jeśli (kompilacja.VERSION.SDK_INT<= 10 || (Build.VERSION.SDK_INT >= 14 && ViewConfiguration.get(this).hasPermanentMenuKey())) ( // klawisz menu jest obecny Toast.makeText(this, „Przycisk Menu jest obecny”, Toast.LENGTH_LONG).show(); ) else ( // Nie klawisz menu Toast.makeText(this, „Brak przycisku Menu”, Toast.LENGTH_LONG).show(); )

    Oznaczenia menu

    W nowoczesnych urządzeniach menu jest częścią Pasek akcji. Możesz także dostosować układ menu za pomocą XML.

    Załóżmy, że wybierasz tę opcję:

    W atrybucie pokażAkcję nie używaj tej wartości nigdy, w przeciwnym razie nie zobaczysz oznaczeń. Sam znacznik jest określony poprzez atrybut Układ akcji. Kod znaczników:

    Menu we fragmentach

    Menu może być nie tylko częścią działania, ale także fragmentem. Zasada działania jest praktycznie taka sama. Fragment ma odpowiednią metodę.

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

    Menedżer fragmentów Odbierz telefon onCreateOptionsMenu() gdy działanie otrzyma wywołanie zwrotne onCreateOptionsMenu() z systemu. Należy wyraźnie poinformować kierownika Menedżer fragmentówże fragment powinien otrzymać wywołanie onCreateOptionsMenu(). W tym celu nazywa się tę metodę setHasOptionsMenu():

    // W kodzie fragmentu @Override public void onCreate(Bundle zapisaneInstanceState) ( super.onCreate(savedInstanceState); setHasOptionsMenu(true); getActivity().setTitle(R.string.cat); ... )

Android w standardowej postaci wygląda słabo. Tak, wszystkie niezbędne funkcje wydają się tam być, ale nadal nie można włączyć wyświetlania procentu baterii. Jest piękna animacja ładowania, ale jest bezużyteczna. Nadal nie było wsparcia dla tematów. I co teraz – zainstaluj kolejną wersję niestandardową, której jutrzejsza kompilacja z pewnością zakończy się niepowodzeniem? Nie, zrobimy wszystko tylko z rootem. Czytaj dalej i dowiedz się, jak zmienić interfejs Androida.

CZYNNOŚCI PRZYGOTOWAWCZE

Aby wykonać wiele sztuczek opisanych w artykule, potrzebujesz roota i zależnego od niego roota. W wersji standardowej będzie działać w 100% poprawnie tylko w oprogramowaniu AOSP, ale i w nich mogą występować usterki. Problemy z modułami Xposed często mogą pojawiać się w fabrycznym oprogramowaniu z modyfikacjami producenta, ale istnieje dla nich specjalna wersja Xposed: dla TouchWiz, dla MIUI, dla oprogramowania opartego na systemie Android 5.0+. Właściciele HTC mogą zainstalować oficjalną wersję, ale prawie zawsze wymagane jest S-OFF.

Masz root, zainstalowałeś Xposed? Więc chodźmy.

1. ZMIEŃ ANIMACJĘ ŁADOWANIA

Animacja rozruchu jest przechowywana w pliku /system/media/bootanimation.zip. Wewnątrz znajduje się dokument tekstowy desc.txt, który wskazuje liczbę klatek na sekundę, rozdzielczość poziomą i pionową itp. Istnieją również same obrazy (ramki), które zmieniają się z częstotliwością określoną w desc.txt. W pliku tym zapisana jest także kolejność i zasady odtwarzania animacji z folderów.

Wszystko, co musisz zrobić, to pobrać archiwum z urządzenia za pomocą menedżera plików z obsługą roota, rozpakować i zastąpić obrazy, nie zapominając o ich uprzednim skompresowaniu do żądanej rozdzielczości. Następnie po prostu spakuj archiwum bez kompresji i przywróć je na swoje miejsce. Ale oczywiście łatwiej jest wziąć gotowe archiwum. Na stronie hboot.co.uk jest ich mnóstwo.

Z drugiej strony, choć animacja jest ciekawa, to nie ma sensu. Ale przydatne może być sprawdzenie, które usługi są uruchomione. Najprostszą opcją jest instalacja LiveBoot, który generuje logcat i dmesg, czyli komunikaty jądra Androida i Linuksa.

2. DODAJ SWOJE DŹWIĘKI DO ZESTAWU STANDARDOWEGO

Dźwięki można upuścić w jednym z folderów w /system/media/audio. alarmy - dzwonki alarmowe;
powiadomienia - dźwięki powiadomień;
dzwonki - dzwonki;
ui - dźwięki systemowe, takie jak niski poziom naładowania baterii, ustawianie ostrości kamery, wybór elementów interfejsu. Niektóre aplikacje mogą uzyskiwać do nich domyślny dostęp, więc możesz je zastąpić własnymi.

Po co umieszczać dzwonki na partycji systemowej? Po pierwsze, znajdujące się tam pliki są w stanie wytrzymać ogólny reset do ustawień fabrycznych; po drugie, dźwięki ze specjalnych folderów można ustawić jako sygnał (dźwięk alarmu, połączenie, odbiór SMS-a) w niemal każdej aplikacji.

3. ZMIEŃ CZCIONKI

Bardzo, bardzo wątpię w przydatność tych działań, ponieważ standardowa czcionka Androida jest niemal idealna. Ale smak i kolor...

Do instalowania czcionek możesz użyć specjalnej aplikacji. Na przykład HiFont umożliwia zmianę czcionek w oprogramowaniu Samsung, HTC, Motorola, Lenovo, Huawei, Nokia X bez rootowania.A jeśli masz root, to na wszystkich innych urządzeniach. Możesz użyć czcionek już dostępnych w katalogu aplikacji lub dodać własne.

Ale gdzie je zdobyć? Istnieją trzy opcje:

  • czcionki pobrane z różnych firmware urządzeń z systemem Android można znaleźć w poście na w3bsit3-dns.com;
  • na w3bsit3-dns.com w następnym poście znajdziesz dobrą kolekcję czcionek stworzonych przez użytkowników;
  • kolekcja na XDA.

Czcionki można instalować bez użycia specjalnej aplikacji. Pobieramy pliki .ttf z archiwum, zastępujemy je w /system/fonts/ (potrzebny jest root) i restartujemy urządzenie.

4. ZMIEŃ IKONY

Ikony można zmieniać za pomocą specjalnych aplikacji, np. Unicon - Icon Themer. Po instalacji musisz aktywować aplikację w ustawieniach Xposed (powiadomi Cię). Następnie uruchom ponownie smartfon i otwórz aplikację. Pozostaje tylko kliknąć Pobierz motywy z Google Play i wybrać pakiet ikon, zainstalować go i ponownie uruchomić smartfon. Warto jednak wziąć pod uwagę, że ikony nie zmieniają się w niektórych programach uruchamiających, na przykład Google Start.

5. DODAWANIE WSPARCIA TEMATU

Przed zainstalowaniem motywu HKTemeManager wyświetli całą listę aplikacji, do których motyw zostanie zastosowany. Odznacz te, które nie są potrzebne, kliknij „Zastosuj motyw” i uruchom ponownie urządzenie.

Istnieje również alternatywna opcja instalacji motywów - aplikacja Layers Manager. Działa w każdym oprogramowaniu na Androidzie 5.0+ dzięki wprowadzeniu mechanizmu relokacji zasobów RRO. Baza motywów aplikacji jest ogromna i znajduje się na rynku Play. Aby go zobaczyć, po prostu wpisz w wyszukiwarce opcję Layers Theme.

Należy pamiętać, że aplikacja nie działa na oprogramowaniu opartym na CyanogenMod: konflikt lokalnego silnika i RRO.

6. KONWERTUJ ANDROID 5.X+ NA ANDROID N

Pomoże nam w tym moduł Android N-ify. Po instalacji pojawią się następujące funkcje Androida N:

  • Wygląd panelu powiadomień ulegnie zauważalnej zmianie. Pojawi się panel szybkich ustawień;
  • Ciekawe napisy pojawią się w ustawieniach pod niektórymi pozycjami.
  • Na przykład pod Wi-Fi zostanie zapisana nazwa bieżącego punktu dostępu, pod pozycją „Bateria” - pozostały czas pracy i procent naładowania baterii;
  • zmieni się pisanka w menu „O telefonie”;
  • Aby szybko przełączać się między dwiema ostatnio uruchomionymi aplikacjami, kliknij dwukrotnie przycisk „Ostatnie”.

Android N-ify posiada także przydatne ustawienia, dzięki którym można nie tylko go wyłączyć, ale także skonfigurować indywidualne wprowadzane zmiany.

7. POPRAWA PASKA STANU

Dla mnie pasek stanu w standardowym Androidzie jest najbardziej niedokończoną rzeczą. Na szczęście Xposed można wykorzystać do zmiany wielu rzeczy i uczynienia go wygodniejszym.

8. Wymiana wskaźnika baterii

Ikona Battery Home instaluje wskaźnik baterii zamiast przycisku Home. Co więcej, wskaźnik ten można w dużym stopniu dostosować: możesz zmieniać kolory, włączać/wyłączać wyświetlanie wartości procentowych, animację ładowania i tak dalej.

XbatteryThemer - dostosuj ikonę baterii. Jest wiele różnych tematów, zarówno zwyczajnych, jak i bardzo niezwykłych.

9. Wyświetl prędkość połączenia internetowego

Wskaźnik prędkości sieci - wskaźnik prędkości sieci. Może pokazywać prędkość sieci komórkowych, Wi-Fi, Bluetooth, Ethernet. Wszystko można dostosować - od jednostek miary i progu prędkości po kolor i rozmiar czcionki. Możesz także dodać ilość ruchu internetowego używanego do paska stanu za pomocą DataUsage. Wyświetlane dane są takie same, jak w sekcji ustawień „Transfer danych”.

10. Wyświetl aktualny poziom sygnału

Czasami musisz wiedzieć, jak dobrze odbierany jest Internet w różnych częściach pokoju, jak położenie smartfona wpływa na poziom odbioru sygnału lub po prostu musisz porównać poziom odbioru sygnału swojego smartfona i innych modeli. NetStrength pomoże w tym. Moduł może wyświetlać poziom sygnału sieci komórkowej w decybelach na miliwat (dBm lub dBm). Ta jednostka miary ma wartość ujemną i im jest ona bliższa zeru, tym lepszy jest odbiór. Można także włączyć wyświetlanie ASU (ang. Arbitrary Strength Unit – stosunek sygnału do szumu w kanale pilota). Obliczane ze wzoru ASU = (dBm + 113)/2.

Nawiasem mówiąc, moduł może pokazywać poziom odbioru Wi-Fi w dBm, Mb/s (Mbit/s - megabity na sekundę) i procentach.

11. Monitoruj proces pobierania

Statusbar Download Progress to jeden z najbardziej przydatnych modułów Xposed. Wyświetla proces pobierania z Play Market lub pliku z Internetu w postaci cienkiego białego paska nad paskiem stanu. Od razu polecam aktywację „God Mode”, dzięki czemu postęp będzie wyświetlany dla każdej aplikacji, która posiada pasek postępu. W ustawieniach możesz ustawić wyświetlanie nad paskiem stanu lub pod linią.

Dlaczego trzeba zrootować urządzenie z Androidem i jakie daje możliwości, wie dość duża liczba użytkowników, czego nie można powiedzieć o ukrytym zaawansowanym menu ustawień sprzętu, zwanym także menu inżynieryjnym. Niewiele osób wie o tych ustawieniach, a jeszcze mniej właścicieli urządzeń mobilnych wie, jak z nich korzystać. Co to jest menu inżynieryjne Androida i dlaczego jest potrzebne?

Menu inżynieryjne Androida to nic innego jak specjalny podprogram przeznaczony do testowania przez twórców systemu operacyjnego i czujników urządzenia. Interfejs tego programu jest reprezentowany przez zestaw opcji, które pozwalają zmienić konfigurację sprzętową urządzenia mobilnego. Za jego pomocą możesz uzyskać kompleksowe informacje o sprzęcie gadżetu, przetestować procesor, pamięć RAM i fizyczną pamięć flash, tryby połączenia bezprzewodowego, skonfigurować parametry aparatu, wyświetlacza, mikrofonu, głośników i wiele więcej.

Wejście do menu inżynieryjnego

Wszystko to oczywiście jest dobre, ale jak przejść do menu inżynieryjnego, jeśli w interfejsie Androida nie ma odpowiedniej opcji? Do menu zaawansowanych ustawień sprzętu można wejść za pomocą specjalnego kodu wpisanego w linii wybierania numeru telefonu. Menu powinno otworzyć się natychmiast po wpisaniu ostatniego znaku kombinacji, jednak w niektórych przypadkach konieczne może być naciśnięcie przycisku połączenia.

W samej procedurze nie ma nic skomplikowanego, należy jednak wziąć pod uwagę, że różne modele gadżetów mobilnych mają własne kody. Poniżej zamieściliśmy listę kodów dla najpopularniejszych producentów.

Kody menu inżynieryjnego w systemie Android są uniwersalne, jednak nie gwarantuje się ich prawidłowego działania na telefonach z „lewym” oprogramowaniem. Możesz także użyć specjalnych programów, aby uzyskać dostęp do ustawień sprzętu Androida, na przykład „Menu inżynieryjne MTK” Lub „Narzędzia mobilne MTK”.

Takie aplikacje są szczególnie przydatne na tabletach, których oprogramowanie nie udostępnia dialera. Interfejs i zestaw dostępnych opcji w tych programach są nieco inne, jednak ich zrozumienie nie będzie trudne.

Niezależnie od wybranej metody należy zachować maksymalną ostrożność podczas pracy z menu inżynieryjnym. Przed rozpoczęciem pracy zdecydowanie zaleca się spisanie wszystkich początkowych wartości parametrów, aby móc przywrócić ustawienia. Niedopuszczalne jest eksperymentowanie z menu inżynieryjnym tylko po to, aby dowiedzieć się, co z niego wyniknie, ponieważ możesz sprawić, że Twoje urządzenie będzie bezużyteczne!

Aby uzyskać listę kodów technicznych dla konkretnego modelu telefonu, możesz skorzystać ze specjalnej aplikacji Tajne kody, dostępny w Google Play. W niektórych modelach urządzeń mobilnych pełny dostęp do menu inżynieryjnego może wymagać uprawnień administratora (root).

Co możesz zmienić za pomocą menu

Wiesz, jak dostać się do menu inżynieryjnego, teraz dowiedzmy się, jakie ustawienia można za jego pomocą wprowadzić. Możliwości są więcej niż szerokie. Podprogram menu umożliwia zmianę poziomu głośności głośnika i czułości mikrofonu, ustawień wbudowanej kamery, parametrów audio, modułów GPS, Bluetooth i Wi-Fi, a także wyłączenie nieużywanych częstotliwości w celu oszczędzania energii baterii. Możesz także przetestować kluczowe elementy swojego urządzenia i zewnętrznej karty pamięci, skonfigurować operacje we/wy, określić dokładną temperaturę procesora i baterii oraz poziom szkodliwego promieniowania elektromagnetycznego.

Kolejną przydatną funkcją jest uzyskanie dostępu do trybu odzyskiwania - analogu BIOS-u na komputerach, który z kolei zawiera cały zestaw ustawień. Funkcje trybu odzyskiwania obejmują resetowanie urządzenia do ustawień fabrycznych, aktualizację oprogramowania sprzętowego, tworzenie kopii zapasowej systemu operacyjnego, uzyskiwanie dostępu do konta root i usuwanie wrażliwych danych użytkownika. Nie sposób w jednym artykule wymienić wszystkich opcji menu inżynierskiego, im więcej czujników i podzespołów posiada telefon czy tablet, tym będzie ono bardziej rozbudowane.

Zwiększanie głośności telefonu poprzez menu inżynieryjne

Pokażmy teraz, jak pracować z ustawieniami sprzętu na przykładzie jednej z najpopularniejszych operacji i dowiedzmy się, jak zwiększyć głośność w systemie Android za pomocą menu inżynieryjnego. Przejdź więc do menu za pomocą Mobileuncle MTK Tools lub wpisując „magiczny” kod, a następnie znajdź i otwórz podsekcję Audio. Jeśli wszedłeś do menu poprzez program Mobileuncle Tools, ta podsekcja będzie znajdować się w starszej sekcji Tryb inżyniera, w innych przypadkach zwykle znajduje się na zakładce Testowanie sprzętu.

W podsekcji Audio będziesz mieć następujące opcje:

  • Tryb normalny – tryb normalny, który działa, gdy do urządzenia nie jest podłączony zestaw słuchawkowy.
  • Tryb zestawu słuchawkowego – tryb zestawu słuchawkowego, który włącza się po podłączeniu do smartfona słuchawek lub głośników.
  • Tryb głośnika – tryb głośnika. Aktywowana, gdy włączony jest zestaw głośnomówiący, pod warunkiem, że do urządzenia nie jest podłączony zestaw słuchawkowy.
  • Headset_LoudSpeaker Mode – tryb głośnikowy przy podłączonym zestawie słuchawkowym. To samo co poprzednio, ale z podłączonymi słuchawkami lub głośnikami.
  • Wzmocnienie mowy – tryb ten włącza się podczas rozmowy przez telefon bez korzystania z zestawu głośnomówiącego.

W sekcji mogą znajdować się inne ustawienia, na przykład Informacje o debugowaniu i Rejestrator mowy, ale lepiej ich nie dotykać. Wybierz tryb, dla którego chcesz zmienić poziom głośności (niech będzie to Tryb Normalny), z listy, która się otworzy, wybierz opcję Wpisz i wskaż, dla jakiej funkcji zmienimy głośność. Mogą być dostępne następujące funkcje:

  • Dzwonek – dostosuj głośność połączeń przychodzących;
  • Media – dostosuj głośność głośnika podczas odtwarzania multimediów;
  • Sip – ustawienia dźwięku dla połączeń internetowych;
  • Sph – ustawienia dźwięku głośnika konwersacyjnego;
  • Sph2 – ustawienia dźwięku drugiego głośnika (opcja może nie być dostępna);
  • Mikrofon – zmień czułość mikrofonu;
  • FMR – ustawienia głośności radia FM;
  • Sid – lepiej nie dotykać tego parametru, w przeciwnym razie mogą wystąpić problemy z głosem rozmówcy.

Po wybraniu funkcji przewiń aktualną listę, ustaw żądaną wartość (od 0 do 255) i kliknij, aby zastosować nowe ustawienia Ustaw.

Aby zmienić poziom głośności, możesz także skorzystać z gotowych szablonów – opcja Poziom. Większość telefonów ma siedem poziomów, od 0 do 6. Zaleca się nie dotykać ustawienia Max Vol, podobnie jak nie należy ustawiać wartości Value zbyt wysokich, w przeciwnym razie dźwięk w głośnikach zacznie świszczeć. Pozostałe tryby w podsekcji Audio konfiguruje się w podobny sposób.

Niektóre modele smartfonów i tabletów wymagają ponownego uruchomienia komputera, aby nowe ustawienia zaczęły obowiązywać.

Resetowanie

Ostatnią rzeczą, na którą dzisiaj spojrzymy, jest resetowanie parametrów menu inżynieryjnego do wartości fabrycznych. Może być konieczne, jeśli po dokonaniu zmian urządzenie zacznie działać nieprawidłowo. Istnieje kilka metod resetowania. Jeśli system uruchamia się normalnie, przejdź do ustawień i otwórz podsekcję „Kopia zapasowa i resetowanie”.

Możesz także zresetować menu inżynieryjne, wpisując w dialerze specjalny kod serwisowy. Zwykle jest to *2767*3855#, *#*#7780#*#* lub *#*#7378423#*#*, ale Twój model telefonu może wymagać innego kodu.

Inną opcją jest użycie wspomnianego powyżej trybu odzyskiwania. Aby się do tego dostać, użyj jednej z poniższych kombinacji:

  • Przycisk zasilania + zmniejszenie głośności.
  • Przycisk zasilania + zwiększanie głośności.
  • Przycisk zasilania + przycisk Home + zmniejszanie/zwiększanie głośności.
  • Przycisk zasilania + zwiększanie głośności + zmniejszanie głośności.

Z listy opcji, która się otworzy, wybierz „wyczyść dane/przywróć ustawienia fabryczne” → „Tak – usuń wszystkie dane użytkownika” → „uruchom ponownie system teraz”. Urządzenie uruchomi się ponownie, a ustawienia zostaną zresetowane.

Istnieje inny sposób zresetowania ustawień menu inżynieryjnego, ale wymaga uprawnień administratora. Korzystając z dowolnego menedżera plików obsługującego prawa roota, przejdź do katalogu głównego systemu, a następnie usuń całość lub część zawartości folderu dane/nvram/apcfg/aprdcl i uruchom ponownie.

Pliki w folderze kwiecień są odpowiedzialni za ustawienie menu inżynieryjnego. Nie jest konieczne usuwanie wszystkich plików na raz. Jeśli zepsujesz, powiedzmy, ustawienia audio, wszystko, co musisz zrobić, aby przywrócić oryginalne ustawienia, to usunąć pliki, które mają w nazwie element ciągu audio. I jedna chwila. Niezależnie od metody resetowania, zawsze wykonuj kopię zapasową swoich danych osobowych i aplikacji, ponieważ mogą one zostać utracone.

Android obsługuje kilka typów menu. Po pierwsze – w telefonie jest osobny przycisk Menu(w starszych telefonach), naciśnięcie którego powoduje wyświetlenie menu. W nowych urządzeniach osobny przycisk został usunięty i zastąpiony ikoną menu w postaci trzech kropek w orientacji pionowej. Drugi typ to menu kontekstowe, które pojawia się po naciśnięciu i przytrzymaniu palca na ekranie w wybranym miejscu (można też nacisnąć i przytrzymać środkowy przycisk w telefonie). Menu kontekstowe z kolei może zawierać podmenu. Dziś zapoznamy się z pierwszym typem menu. W tym artykule omówimy pracę z menu na nowych urządzeniach z systemem Android 4.0 i nowszym.

W szablonie Pusta aktywność nie ma menu, więc stworzymy je sami. Pomoże Ci to zrozumieć zasadę działania i uzyskać przegląd projektu. Aby obsłużyć wybór elementów menu, nie jest konieczne zapamiętywanie nazw klas, metod i kodu. W pozostałych szablonach menu będzie wbudowane i będzie można z niego od razu skorzystać.

Utwórz nowy projekt na podstawie Pusta aktywność i uruchom go. Nie ma jeszcze menu.

Utwórzmy w pliku kilka zasobów ciągów res/values/strings.xml, który będzie odpowiedzialny za pozycje menu:

Ustawienia Kot Kot Koteczek

Teraz utwórz nowy folder menu w folderze rez rez, | Nowy | Informator). Następnie utwórz plik w utworzonym folderze menu_main.xml- nazwa wskazuje, że menu odnosi się do głównej działalności Główna aktywność(kliknij prawym przyciskiem myszy folder menu | Nowy | Plik zasobów menu). Jeśli utworzysz aplikację z wieloma ekranami, wówczas każda czynność będzie miała osobne menu z własnymi ustawieniami. Otwórzmy na razie plik menu_main.xml i dodaj swój kod do powstałego szablonu:

Otwórzmy plik Główna aktywność. Obecnie istnieje tylko jedna metoda onCreate(). Dodajmy nową metodę onCreateOptionsMenu(). Metoda ta odpowiada za wygląd menu aktywności. Wybierz menu w studiu Kod| i w kolejnym oknie zacznij wpisywać nazwę metody od pierwszych liter. Można wpisać pierwszymi wielkimi literami, tj. ocom ( o N C powtórzyć O opcje M enu), aby szybko znaleźć potrzebną linię. naciśnij przycisk OK i otrzymujemy przedmiot obrabiany.

@Override publiczna wartość logiczna onCreateOptionsMenu(menu) (zwróć super.onCreateOptionsMenu(menu); )

Do szablonu dodajemy metodę, która pobiera dane z zasobów menu i konwertuje je na pozycje menu na ekranie.

@Override publiczna wartość logiczna onCreateOptionsMenu(menu) ( getMenuInflater().inflate(R.menu.menu_main, menu); return true; )

W metodzie nadmuchać() wskazujesz zasób menu ( R.menu.menu_main) i obiekt klasy Menu.

W języku angielskim „nadmuchać” tłumaczy się jako nadmuchać, tj. Według twórców Androida nadmuchujemy obiekt, na przykład menu, danymi. Ale w rzeczywistości słowo „nadmuchać” pochodzi od tego wyrażenia w mieszkaniu- do mieszkania. Istnieje stara tradycja wpuszczania najpierw kota do mieszkania, który zwiedza wszystkie zakamarki domu i deklaruje zgodę na zamieszkiwanie w nim. W ten sposób uruchamiamy dane z pliku XML do obiektu MenuInflater.

Rozpocznij projekt. Teraz po prawej stronie nagłówka zobaczysz ikonę trzech kropek ustawionych w pionowej linii. Kliknij ikonę, aby wyświetlić pozycję menu Ustawienia.

Jak można się domyślić, element przedmiot odpowiada za osobną pozycję menu. Dodajmy jeszcze trzy pozycje na tej samej zasadzie, zmieniając jedynie identyfikator i tekst menu:

Uruchom projekt i spróbuj ponownie wywołać menu. Zobaczysz trzy nowe elementy.

Opcje ID I tytuł nie potrzebuję żadnych wyjaśnień. Parametr zamówienie w kategorii pozwala na ustawienie własnej kolejności wyświetlania pozycji menu. Załóżmy, że utworzyłeś pięć pozycji menu, ale nie zdecydowałeś jeszcze o kolejności ich wyświetlania na ekranie. Aby uniknąć ciągłego przenoszenia całych bloków kodu dla pozycji menu w żądanej kolejności, możesz skorzystać z tej opcji.

I na koniec ważny atrybut aplikacja: showAsAction definiuje zachowanie menu w Pasek akcji. Oznaczający nigdy oznacza, że ​​pozycja menu nie powinna pojawić się w nagłówku, a jedynie w wyskakującym menu, czyli tzw. tracić trzy punkty. Jeśli ustawisz wartość zawsze, a następnie wskaż Ustawienia pojawi się natychmiast w nagłówku Twojej aplikacji. Dostępne są również wartości jeśliPokoje, zTekst I zwiń WidokAkcji. Spróbuj sam. Na przykład, jeśliPokój wyświetla element menu, jeśli pozwala na to miejsce. Jeśli punktów będzie dużo, będą one tylko przeszkadzać. Z reguły ta opcja wyświetla bardzo krótkie słowo lub ikonę przy częstych operacjach, aby uniknąć niepotrzebnego klikania trzech kropek.

Zwróć uwagę na atrybut aplikacja: showAsAction, który odnosi się do przestrzeni nazw xmlns:app="http://schemas.android.com/apk/res-auto". Był czas, kiedy taka przestrzeń nazw nie istniała i projekty korzystały z tego atrybutu Android: showAsAction ze standardowej przestrzeni nazw. Jeśli studio złoży skargę na błąd, edytuj kod.

Podczas gdy pozycje menu nie wykonują żadnej użytecznej pracy. Każde kliknięcie elementu po prostu zamyka menu bez widocznych konsekwencji. Nie napisaliśmy jeszcze kodu obsługującego kliknięcia.

Wybieranie pozycji menu

Nauczyliśmy się tworzyć menu. Ale na razie jest to bezużyteczne, ponieważ pozycje menu w żaden sposób nie reagują na nasze kliknięcia. Inna metoda służy do obsługi kliknięć elementów menu. onOptionsItemSelected(). Dodajmy metodę wykorzystującą tę samą zasadę co w poprzednim przykładzie. Weźmy puste miejsce.

@Override publiczna wartość logiczna onOptionsItemSelected(element MenuItem) (zwróć super.onOptionsItemSelected(item); )

Parametr przedmiot jest odpowiedzialny za pozycję menu. Powinieneś uzyskać identyfikator menu za pomocą tej metody getItemId() i podaj jego kod. Ponieważ menu składa się zwykle z kilku pozycji, wygodnie jest korzystać z konstrukcji Jeśli inaczej Lub przełącznik. Do wyświetlania informacji użyjemy etykiety tekstowej. Dodaj komponent do ekranu aktywności Widok tekstu. Możesz skorzystać z istniejącego Widok tekstu z napisem „Hello World!”, po prostu nadaj mu identyfikator.

android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Witaj, świecie!"/>

Dodajmy kod do szablonu dla wybranej pozycji menu:

@Override public boolean onOptionsItemSelected(MenuItem item) ( // pobierz identyfikator wybranej pozycji menu int id = item.getItemId(); TextView infoTextView = (TextView) findViewById(R.id.textView); // Operacje na wybranej pozycji przełącznik pozycji menu ( id) ( case R.id.action_cat1: infoTextView.setText("Wybrałeś kota!"); return true; case R.id.action_cat2: infoTextView.setText("Wybrałeś kota!"); return true; case R. id.action_cat3: infoTextView.setText("Wybrałeś kociaka!"); return true; domyślnie: return super.onOptionsItemSelected(item); ) )

Uruchom aplikację, wywołaj menu i wybierz dowolną pozycję menu. W polu tekstowym powinien pojawić się komunikat.

Istnieje alternatywny sposób poprzez XML, podobny do obsługi kliknięć przycisków (od Androida 3.0). Możesz dodać atrybut Android: po kliknięciu w zasobach menu i nie musisz używać wywołania metody onOptionsItemSelected(). Z pomocą Android: po kliknięciu możesz określić żądaną metodę podczas wybierania pozycji menu. Dodaj ten atrybut do elementu Ustawienia

Teraz w kodzie aktywności napiszemy co następuje:

// atrybut pozycji menu Ustawienia jest ustawiony na android:onClick="onSettingsMenuClick" public void onSettingsMenuClick(MenuItem item) ( TextView infoTextView = (TextView) findViewById(R.id.textView); infoTextView.setText("Wybrałeś ustawienia pozycja, lepiej wybrałbym kota"); )

Przełączniki

Wygląd pozycji menu można zmienić na widok za pomocą przełączników. Aby to zrobić, musisz dodać element Grupa z atrybutem android:checkableBehavior="pojedynczy":

Nie widzę większego sensu w tym trybie. I nie będziemy tego rozważać.

Tryb projektowania

W Android Studio 2.2 dodano tryb graficzny do budowania menu, które przypominają pasek narzędzi do dodawania nowych komponentów na ekranie. Panel menu składa się z czterech elementów: Pozycja w menu, Wyszukaj element, Menu, Grupa.

Zasada jest taka sama, wybierz żądany element i przeciągnij go na ekran do obszaru menu. Jeśli uczyłeś się ręcznego tworzenia menu, ta metoda nie sprawi ci żadnych trudności. Dzięki niemu możesz szybko naszkicować strukturę menu, a następnie dostosować ją ręcznie.