Kaip pakeisti standartinį telefono išjungimo meniu. Kaip išplėsti Android išjungimo meniu

Kodėl jums reikia įsišaknijimo? Android įrenginiai ir kokias galimybes jis suteikia, gerai žinomi didelis skaičius vartotojų, ko negalima pasakyti apie paslėptą išplėstinių aparatūros nustatymų meniu, dar vadinamą inžinerijos meniu. Mažai žmonių žino apie šiuos nustatymus ir dar mažiau savininkų. mobiliuosius įrenginiusžinoti, kaip jais naudotis. Kas yra „Android“ inžinerijos meniu ir kodėl jis reikalingas?

Android inžinerijos meniu yra ne kas kita, kaip speciali paprogramė, skirta operacinės sistemos ir įrenginio jutiklių kūrėjams išbandyti. Šios programos sąsają sudaro parinkčių rinkinys, leidžiantis pakeisti mobiliojo įrenginio aparatinės įrangos konfigūraciją. Su jo pagalba galite gauti išsamią informaciją apie programėlės techninę įrangą, išbandyti procesorių, RAM ir fizinę "flash" atmintį, belaidžio ryšio režimus, sukonfigūruoti fotoaparato, ekrano, mikrofono, garsiakalbių parametrus ir daug daugiau.

Įėjimas į inžinerijos meniu

Visa tai, žinoma, yra gerai, bet kaip patekti į inžinerijos meniu, jei „Android“ sąsajoje nėra atitinkamos parinkties? Į išplėstinių techninės įrangos nustatymų meniu galite patekti naudodami specialų kodą, įvestą telefono numerio rinkimo eilutėje. Įvedus paskutinį derinio simbolį, meniu turėtų atsidaryti iš karto, tačiau kai kuriais atvejais gali tekti paspausti skambinimo mygtuką.

Pačioje procedūroje nėra nieko sudėtingo, tačiau reikia atsižvelgti į tai, kad skirtingi mobiliųjų programėlių modeliai turi savo kodus. Žemiau pateikėme populiariausių gamintojų kodų sąrašą.

„Android“ inžinerinių meniu kodai yra universalūs, tačiau jų teisingas veikimas telefonuose su „kairiąja“ programine įranga negarantuojamas. Taip pat galite naudoti specialias programas, kad pasiektumėte „Android“ aparatinės įrangos nustatymus, pvz. "MTK inžinerijos meniu" arba „Mobileuncle MTK Tools“.

Tokios programos ypač naudingos planšetiniuose kompiuteriuose, kurių programinė įranga nepateikia rinkiklio. Šių programų sąsaja ir galimų parinkčių rinkinys šiek tiek skiriasi, tačiau jas suprasti nebus sunku.

Kad ir kokį metodą naudotumėte, dirbdami su inžinerijos meniu turite būti maksimaliai atsargūs. Prieš pradedant darbą, primygtinai rekomenduojama užsirašyti visas pradines parametrų reikšmes, kad galėtumėte atkurti nustatymus. Nepriimtina eksperimentuoti su inžinerijos meniu, kad sužinotumėte, kas iš jo išeina, nes galite padaryti savo įrenginį netinkamu naudoti!

Norėdami gauti konkretaus telefono modelio inžinerinių kodų sąrašą, galite naudoti specialią programą Slaptieji kodai, pasiekiama „Google Play“. Kai kuriuose mobiliųjų įrenginių modeliuose visapusiškai prieigai prie inžinerijos meniu gali prireikti supervartotojo teisių (root).

Ką galite pakeisti naudodami meniu

Žinote, kaip patekti į inžinerijos meniu, dabar išsiaiškinkime, kokius nustatymus galima atlikti naudojant jį. Galimybės yra daugiau nei plačios. Meniu paprogramė palaiko garsiakalbių garsumo lygio ir mikrofono jautrumo keitimą, įtaisytosios kameros nustatymus, garso parametrus, GPS, Bluetooth ir Wi-Fi modulius bei nenaudojamų dažnių išjungimą taupant akumuliatoriaus energiją. Taip pat galite išbandyti pagrindinius įrenginio ir išorinės atminties kortelės komponentus, konfigūruoti I/O operacijas, nustatyti tikslią procesoriaus ir baterijos temperatūrą bei kenksmingos elektromagnetinės spinduliuotės lygį.

Kita naudinga funkcija yra prieiga prie atkūrimo režimo - kompiuterių BIOS analogo, kuriame savo ruožtu yra visas nustatymų rinkinys. Atkūrimo režimo funkcijos apima įrenginio gamyklinių nustatymų atkūrimą, programinės aparatinės įrangos atnaujinimą, operacinės sistemos atsarginės kopijos kūrimą, root prieigos gavimą ir jautrių vartotojo duomenų ištrynimą. Neįmanoma išvardyti visų inžinerinių meniu parinkčių viename straipsnyje, kuo daugiau jutiklių ir komponentų turės telefonas ar planšetinis kompiuteris, tuo jis bus platesnis.

Telefono garsumo didinimas per inžinerijos meniu

Dabar parodykime, kaip dirbti su aparatūros nustatymais, naudodamiesi vienos iš populiariausių operacijų pavyzdžiu, ir sužinokite, kaip padidinti garsumą „Android“ naudojant inžinerijos meniu. Taigi, eikite į meniu naudodami „Mobileuncle MTK Tools“ arba įvesdami „stebuklingą“ kodą, tada suraskite ir atidarykite garso įrašo poskyrį. Jei į meniu patekote per programą „Mobileuncle Tools“, šis poskyris bus vyresniame skyriuje „Inžinieriaus režimas“, kitais atvejais jis paprastai yra skirtuke „Hardware Testing“.

Garso poskyryje turėsite šias parinktis:

  • Normalus režimas – įprastas režimas, veikiantis, kai prie įrenginio neprijungtos ausinės.
  • Ausinių režimas – ausinių režimas, įsijungiantis, kai prie išmaniojo telefono prijungiamos ausinės arba garsiakalbiai.
  • LoudSpeaker Mode – garsiakalbio režimas. Suaktyvinama, kai įjungiamas garsiakalbis, jei prie įrenginio neprijungtos ausinės.
  • Headset_LoudSpeaker Mode – garsiakalbio režimas su prijungtomis ausinėmis. Toks pat, kaip ir ankstesnis, tik prijungus ausines ar garsiakalbius.
  • Kalbos stiprinimas – šis režimas įjungiamas, kai kalbate telefonu nenaudojant garsiakalbio.

Skiltyje gali būti ir kitų nustatymų, pavyzdžiui, „Debug Info“ ir „Speech Logger“, bet geriau jų neliesti. Pasirinkite režimą, kuriam norite keisti garsumo lygį (tebūnie Normal Mode), atsidariusiame sąraše pasirinkite Type ir nurodykite, kurios funkcijos garsumą keisime. Gali būti prieinamos šios funkcijos:

  • Skambėti – reguliuoti įeinančių skambučių garsumą;
  • Media – reguliuokite garsiakalbio garsumą, kai leidžiate multimediją;
  • Sip – skambučių internetu garso nustatymai;
  • Sph – pokalbio garsiakalbio garso nustatymai;
  • Sph2 – antrojo garsiakalbio garso nustatymai (ši parinktis gali nebūti);
  • Mikrofonas – pakeisti mikrofono jautrumą;
  • FMR – FM radijo garsumo nustatymai;
  • Sidas – šio parametro geriau neliesti, kitaip gali kilti problemų su pašnekovo balsu.

Pasirinkę funkciją, slinkite per esamą sąrašą, nustatykite norimą reikšmę (nuo 0 iki 255) ir spustelėkite, kad pritaikytumėte naujus Nustatyti nustatymus.

Norėdami pakeisti garsumo lygį, taip pat galite naudoti iš anksto nustatytus šablonus – parinktį Lygis. Dauguma telefonų turi septynis lygius, nuo 0 iki 6. Patartina neliesti Max Vol nustatymo, kaip ir nevertėtų per aukštų Value verčių, kitaip garsiakalbiuose pradės švokšti. Kiti garso poskyrio režimai sukonfigūruoti panašiai.

Kai kuriuos išmaniųjų telefonų ir planšetinių kompiuterių modelius reikia paleisti iš naujo, kad įsigaliotų nauji nustatymai.

Nustatyti iš naujo

Ir paskutinis dalykas, į kurį šiandien žiūrėsime, yra inžinerinių meniu parametrų atstatymas į gamyklines vertes. Gali prireikti, jei po pakeitimų įrenginys pradės veikti netinkamai. Yra keletas atkūrimo būdų. Jei sistema paleidžiama įprastai, eikite į nustatymus ir atidarykite poskyrį „Atsarginė kopija ir nustatymas iš naujo“.

Taip pat galite iš naujo nustatyti inžinerijos meniu įvesdami specialų paslaugos kodas. Paprastai tai yra *2767*3855#, *#*#7780#*#* arba *#*#7378423#*#*, tačiau jūsų telefono modeliui gali reikėti kito kodo.

Kita galimybė yra naudoti aukščiau paminėtą atkūrimo režimą. Norėdami patekti į jį, naudokite vieną iš šių derinių:

  • Maitinimo mygtukas + garsumo mažinimas.
  • Maitinimo mygtukas + garsumo didinimas.
  • Maitinimo mygtukas + namų mygtukas + garsumo mažinimas / padidinimas.
  • Maitinimo mygtukas + garsumo didinimas + garsumo mažinimas.

Atsidariusiame parinkčių sąraše pasirinkite „išvalyti duomenis / atkurti gamyklinius nustatymus“ → „Taip – ​​ištrinti visus vartotojo duomenis“ → „paleisti sistemą iš naujo dabar“. Įrenginys bus paleistas iš naujo ir nustatymai bus nustatyti iš naujo.

Yra dar vienas būdas iš naujo nustatyti inžinerijos meniu nustatymus, tačiau tam reikalingos supervartotojo teisės. Naudojant bet kurią failų tvarkyklę, kuri palaiko šakninės teisės, eikite į sistemos šakninį katalogą ir ištrinkite visą aplanko turinį arba jo dalį data/nvram/apcfg/aprdcl ir paleiskite iš naujo.

Failai aplanke aprdcl jie atsakingi už inžinerinio meniu nustatymą. Nebūtina ištrinti visų failų vienu metu. Jei sujaukėte, tarkime, garso nustatymus, norint atkurti pradinius nustatymus tereikia ištrinti failus, kurių pavadinimuose yra garso eilutės elementas. Ir vieną akimirką. Nepriklausomai nuo nustatymo iš naujo metodo, visada pasidarykite savo asmeninių duomenų ir programų atsarginę kopiją, nes jie visi gali būti prarasti.

„Android“ standartine forma atrodo prastai. Taip, atrodo, kad visos reikalingos funkcijos yra, bet vis tiek negalite įjungti akumuliatoriaus procento rodymo. Valgyk graži animacija parsisiųsti, bet tai nenaudinga. Palaikymo temoms vis dar nebuvo. Tai ką daryti dabar – įdiegti kitą užsakymą, kurio rytoj vakaro kūrimas tikrai nepavyks? Ne, mes viską darysime tik su šaknimis. Skaitykite toliau ir sužinokite, kaip pakeisti „Android“ sąsają.

PARENGIMASIS ŽINGSNIAI

Norint atlikti daugelį straipsnyje aprašytų gudrybių, reikia šaknies ir nuo jos priklausančios šaknies. Standartinėje versijoje jis veiks 100% teisingai tik AOSP programinėje įrangoje, tačiau net ir jose gali būti gedimų. Dažnai gali kilti problemų su Xposed moduliais akcijų programinė įranga su gamintojo pakeitimais, tačiau jiems yra speciali Xposed versija: skirta TouchWiz, MIUI, programinė įranga, pagrįsta Android 5.0+. HTC savininkai gali įdiegti oficialią versiją, tačiau beveik visada reikalingas S-OFF.

Turite root, įdiegėte Xposed? Tada eime.

1. PAKEISTI ĮKELIMO ANIMACIJĄ

Įkrovos animacija saugoma /system/media/bootanimation.zip faile. Viduje yra tekstinis dokumentas desc.txt, jame nurodomas kadrų dažnis, horizontali ir vertikali raiška ir kt. Taip pat yra patys vaizdai (kadrai), kurie keičiasi desc.txt nurodytu dažnumu. Šiame faile taip pat parašyta animacijos iš aplankų atkūrimo tvarka ir taisyklės.

Tereikia gauti archyvą iš įrenginio naudojant failų tvarkyklę su root palaikymu, išpakuoti ir pakeisti vaizdus, ​​nepamirštant pirmiausia juos suspausti iki norimos raiškos. Tada tiesiog supakuokite archyvą be suspaudimo ir grąžinkite jį į vietą. Bet, žinoma, lengviau pasiimti paruoštą archyvą. Svetainėje hboot.co.uk jų yra daug.

Kita vertus, nors į animaciją ir įdomu žiūrėti, ji neturi prasmės. Tačiau gali būti naudinga pamatyti, kurios paslaugos veikia. Paprasčiausias variantas yra įdiegti LiveBoot, kuris išveda logcat ir dmesg, t.y. Android ir Linux branduolio pranešimus.

2. PRIDĖKITE SAVO GARSUS PRIE STANDARTINIO RINKINIMO

Garsus galima nuleisti į vieną iš aplankų /system/media/audio. žadintuvai – žadintuvo skambėjimo tonai;
pranešimai – pranešimų garsai;
melodijos - skambėjimo tonai;
ui – sistemos garsai, tokie kaip senka baterija, fotoaparato fokusavimas, sąsajos elementų pasirinkimas. Kai kurios programos gali jas pasiekti pagal numatytuosius nustatymus, todėl galite jas pakeisti savo.

Kodėl į sistemos skaidinį įdėti skambėjimo tonus? Pirma, ten esantys failai gali atlaikyti bendrą gamyklinių nustatymų atkūrimą; antra, garsus iš specialių aplankų galima nustatyti kaip signalą (žadintuvo garsą, skambutį, SMS gavimą) beveik bet kurioje programoje.

3. PAKEISTI ŠRIFTUS

Labai labai abejoju šių veiksmų naudingumu, nes standartinis Android šriftas yra beveik tobulas. Bet skonis ir spalva...

Norėdami įdiegti šriftus, galite naudoti specialią programą. Pavyzdžiui, „HiFont“ leidžia keisti šriftus Samsung firmware, HTC, Motorola, Lenovo, Huawei, Nokia X. O jei yra root, tai visuose kituose įrenginiuose. Galite naudoti šriftus, jau esančius programų kataloge, arba pridėti savo.

Bet kur jų gauti? Yra trys parinktys:

  • šriftus, paimtus iš skirtingų „Android“ įrenginių programinės įrangos, galite rasti įraše w3bsit3-dns.com;
  • svetainėje w3bsit3-dns.com kitame įraše yra gera vartotojo sukurtų šriftų kolekcija;
  • kolekcija XDA.

Galite įdiegti šriftus nenaudodami specialios programos. Paimame .ttf failus iš archyvo, pakeičiame jais /system/fonts/ (reikalingas root) ir perkrauname įrenginį.

4. PAKEISTI PIKKONAS

Piktogramas galima keisti naudojant specialias programas, pavyzdžiui, Unicon - Icon Themer. Įdiegę turite suaktyvinti programą Xposed nustatymuose (ji jums praneš). Tada iš naujo paleiskite išmanųjį telefoną ir atidarykite programą. Belieka spustelėti Atsisiųsti temų iš Google Play ir pasirinkti piktogramų paketą, įdiegti jį ir iš naujo paleisti išmanųjį telefoną. Tačiau verta manyti, kad kai kuriose paleidimo priemonėse, pavyzdžiui, „Google Start“, piktogramos nesikeičia.

5. TEMŲ PARAMOS PRIDĖJIMAS

Prieš diegdama temą, HKThemeManager parodys visą programų, kurioms bus pritaikyta tema, sąrašą. Atžymėkite tuos, kurie nereikalingi, spustelėkite „Taikyti temą“ ir iš naujo paleiskite įrenginį.

Taip pat yra alternatyvi temų diegimo galimybė - Layers Manager programa. Dėl įdiegto RRO išteklių perskirstymo mechanizmo jis veikia su bet kokia programine įranga „Android 5.0+“. Programos temų duomenų bazė yra didžiulė ir yra Play Market. Norėdami tai pamatyti, tiesiog paieškoje įveskite sluoksnių temą.

Atminkite, kad programa neveikia su CyanogenMod pagrįsta programine įranga: vietinis variklis ir RRO konfliktas.

6. KONVERTIKITE ANDROID 5.X+ Į ANDROID N

„Android N-ify“ modulis mums padės tai padaryti. Įdiegę pasirodys šios „Android N“ funkcijos:

  • Pranešimų skydelio dizainas pastebimai pasikeis. Atsiras greitųjų nustatymų skydelis;
  • Įdomūs užrašai atsiras nustatymuose po kai kuriais elementais.
  • Pavyzdžiui, „Wi-Fi“ bus parašytas dabartinio prieigos taško pavadinimas, skiltyje „Baterija“ - likęs veikimo laikas ir akumuliatoriaus įkrova procentais;
  • meniu „Apie telefoną“ pasikeis velykinis kiaušinis;
  • Dukart spustelėdami mygtuką „Naujausi“ greitai perjungsite dvi paskiausiai paleistas programas.

„Android N-ify“ taip pat turi naudingų nustatymų, per kuriuos galite ne tik jį išjungti, bet ir konfigūruoti atskirus atliktus pakeitimus.

7. BŪSENOS JUOSTOS TOBULINIMAS

„Android“ sandėlyje esanti būsenos juosta man yra labiausiai neužbaigtas dalykas. Laimei, naudojant Xposed galima daug ką pakeisti ir padaryti tai patogesnį.

8. Baterijos indikatoriaus keitimas

Battery Home Icon vietoje pagrindinio mygtuko įdiegia akumuliatoriaus indikatorių. Be to, šis indikatorius yra labai pritaikomas: galite keisti spalvas, įjungti / išjungti procentų rodymą, įkrovimo animaciją ir pan.

XbatteryThemer – tinkinkite akumuliatoriaus piktogramą. Yra daug įvairių temų – ir įprastų, ir labai nepaprastų.

9. Rodyti interneto ryšio greitį

Tinklo greičio indikatorius - tinklo greičio indikatorius. Gali parodyti mobiliųjų tinklų, Wi-Fi, Bluetooth, Ethernet greitį. Viskas pritaikoma – nuo ​​matavimo vienetų ir greičio slenksčio iki spalvos ir šrifto dydžio. Taip pat galite pridėti naudojamą interneto srautą į būsenos juostą naudodami „DataUsage“. Rodomi duomenys yra tokie patys, kaip ir „Duomenų perdavimo“ nustatymų skiltyje.

10. Rodyti faktinį signalo lygį

Kartais reikia žinoti, kaip gerai internetas priimamas skirtingose ​​patalpos vietose, kaip išmaniojo telefono padėtis įtakoja signalo priėmimo lygį, arba tiesiog reikia palyginti savo išmaniojo telefono ir kitų modelių signalo priėmimo lygį. NetStrength padės tai padaryti. Modulis gali rodyti korinio tinklo signalo lygį decibelais milivatui (dBm arba dBm). Šis matavimo vienetas turi neigiama prasmė, ir kuo jis arčiau nulio, tuo geresnis priėmimas. Taip pat galite įjungti ASU (Savavališkas stiprumo vienetas – signalo ir triukšmo santykis bandomajame kanale) rodymą. Apskaičiuota pagal formulę ASU = (dBm + 113)/2.

Beje, modulis gali rodyti Wi-Fi priėmimo lygį dBm, Mbps (Mbit/s – megabitai per sekundę) ir procentais.

11. Stebėkite atsisiuntimo procesą

Būsenos juostos atsisiuntimo eiga yra vienas iš naudingiausių Xposed modulių. Jis rodo atsisiuntimo procesą iš „Play Market“ arba failą iš interneto plona balta juosta virš būsenos juostos. Nedelsiant rekomenduoju suaktyvinti „Dievo režimą“, kurio dėka bus rodoma visų programų, kuriose yra eigos juosta, pažanga. Nustatymuose galite nustatyti ekraną virš būsenos juostos arba po linija.

Kažkada, maždaug prieš 5 metus, prietaisai su Operacinė sistema Android. Buvo geras laikas, pasaulis išbrido iš krizės, laukė daug įdomių dalykų, kiekviename įrenginyje buvo meniu mygtukas.
Po 2 metų „Android“ vaikinai pranešė, kad „meniu“ mygtukas ant įrenginio korpuso nebėra madingas ir galite apsieiti be jo. Nuo tada kiekvienas iš mūsų (Kūrėjų gildija) žino, kaip iškelti meniu daugumoje „Android“ įrenginių.
Kai kam tai gali atrodyti kaip baisu, tegul taip yra, bet praėjusią savaitę mes praleidome 2 valandas savo gyvenimo aiškindami tai vartotojui. Su tuo buvo neįmanoma susitaikyti, todėl žemiau pateikiamas aprašymas, kaip iškviesti meniu funkciją „Android“ įrenginiuose.
Štai kaip atrodo mechaniniai meniu mygtukai dažniausiai naudojamuose įrenginiuose:

Be to, daugeliu atvejų meniu funkcijai iškviesti pakanka vieno trumpo palietimo. Tačiau dažnai prie veikiančių programų pasirinkimo mygtuko gali būti pridėtas meniu skambutis. Tai atrodo taip:


Tokiu atveju atsidarys meniu tik ilgai paspaudus(vadinamasis ilgas paspaudimas)! Tai yra ne tik parodė pirštu, bet bakstelėjo ir laikė. Daugelis žmonių sako po to Oho!

Planšetinių kompiuterių savininkams patariu atkreipti dėmesį į ekrano darbo sritį, čia dažniausiai yra mygtukai, įskaitant meniu.


Ir ne visada maksimaliai į dešinę, bet būtent taip atrodo šis mygtukas.
Ant šviežių Android versijos OS meniu mygtukas atrodo taip.

Pirmas treniruočių mėnuo. Pažvelkime giliau į darbą su meniu. Bus atsižvelgta ir į senus įrenginius, kuriuose veikia Android 2.3, ir į naujus telefonus, kuriuose veikia Android 4.0.

Parinkčių meniu

Už valgiaraštį atsakinga klasė android.view.Meniu. Kiekviena veikla susieta su vienu meniu objektu. Pačiame meniu yra meniu elementai (klasė android.view.MenuItem) ir submeniu (klasė android.view.SubMenu).

Paspaudus mygtuką Meniu senesniuose telefonuose pasirodo meniu elementų rinkinys, kuris pridedamas prie veiklos. Meniu gali būti piktogramų. Tokiame meniu gali būti šeši elementai (dažniausiai). Jei yra daugiau nei šeši elementai, naudojamas išplėstinis meniu – tokiu atveju vietoj šeštojo elemento pasirodo elementas Galimybės(Daugiau). Spustelėjus šį elementą, rodomas išplėstas meniu su elementų, kurie netelpa į pagrindinę parinkčių meniu dalį, sąrašu.

Pirmą kartą atidarius meniu, „Android“ iškviečia metodą onCreateOptionsMenu(), perduodant objektą kaip parametrą Meniu. Meniu gali būti kuriami kaip ištekliai XML faile arba galite naudoti šį metodą papildyti().

Standartiniame projekte, renkantis įprastą šabloną, jau yra šablonas meniu su vienu elementu Nustatymai ir meniu metodo iškvietimas (apie tai jau žinote).

Meniu kūrimas naudojant išteklius

Pažiūrėkime, kaip dirbti su meniu per išteklius. Norėdami sukurti meniu, naudojami ištekliai, kurie turi būti saugomi XML faile. Pats failas turi būti aplanke res/menu/ jūsų projektas. Meniu susideda iš šių elementų:

Apibrėžia meniu, kuriame bus meniu elementai. Elementas turi būti pagrindinis XML failo struktūros elementas ir gali turėti vieną ar daugiau elementų Ir Tiesiogiai sukuria meniu elementus. Šis elementas gali turėti įdėtą elementą norėdami sukurti submeniu Jei norite, elementams galite naudoti ir nematomą talpyklą . Tai leidžia pasiekti tam tikrų efektų

Tarkime, nusprendžiame kokiam nors žaidimui naudoti meniu. Sukurkime naują failą game_menu.xml:

Sukūrėme meniu su dviem elementais. Kiekvienas elementas turi šiuos atributus:

Android:id Meniu elemento identifikatorius, kurį programa gali atpažinti, kai vartotojas pasirenka meniu elementą android:title Tekstas, kuris bus rodomas meniu

Yra ir kitų elemento atributų daiktas, Pavyzdžiui android:icon="@drawable/home" taip pat leis jums rodyti meniu elemento piktogramą ir android:enabled="false" leidžia padaryti meniu elementą nepasiekiamą.

Atributas android:titleCondensed naudojamas, jei įprastas pavadinimas yra per platus ir „netelpa“ į pasirinktą meniu elementą.

Atributas android:orderInCategory Apibrėžia tvarką, kuria bus rodomi meniu elementai.

Kurdami meniu nurodėme eilučių išteklius @string/new_game Ir @string/help. Prie failo reikia pridėti naujų eilučių strings.xml:

Naujas žaidimas Nuoroda

Dabar reikia pakeisti veiklos klasę, kurioje bus rodomas meniu. Programa turi konvertuoti mūsų sukurtą meniu šaltinį į programos objektą. Tam yra specialus metodas MeniuInflater.inflate() kuris vadinamas specialiu atgalinio skambučio metodu onCreateOptionsMenu(). Šis metodas skirtas meniu rodyti paspaudus mygtuką. MENIUįrenginyje:

@Nepaisyti viešosios loginės reikšmės onCreateOptionsMenu(Meniu meniu) ( MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.game_menu, menu); return true; )

Įklijavus kodą, kūrimo aplinka paprašys importuoti trūkstamas vardų sritis.

Importuoti android.view.Menu; importuoti android.view.MenuInflater;

Metodas onCreateOptionsMenu() Metodas inicijuoja pirmąjį meniu pasirodymą ekrane ir paima meniu objektą kaip parametrą (senesniems įrenginiams). Galite išsaugoti meniu nuorodą ir naudoti ją bet kurioje kodo vietoje, kol metodas onCreateOptionsMenu() daugiau neskambins. Visada turėtumėte naudoti šios tvarkyklės diegimą iš pirminės klasės, nes prireikus ji automatiškai įtraukia į meniu papildomus sistemos elementus. Naujesniuose įrenginiuose metodas iškviečiamas, kai sukuriama veikla. Metodas turi grąžinti reikšmę tiesa kad meniu būtų matomas ekrane.

Paleidę programą, spustelėkite mygtuką MENIU emuliatoriuje, kad pamatytumėte sukurtą meniu.

Metodas getMenuInflater() grąžina klasės egzempliorių MeniuInflater, kurį naudojame meniu duomenims nuskaityti iš XML.

Kaip matote, meniu pasirodo ekrano apačioje. Iš viso vienu metu gali būti rodomi šeši meniu elementai. Jei yra daugiau taškų, bus rodomi penki taškai plius šeštas taškas Daugiau, kuri leis matyti likusius elementus. Patikrinkime ir pridėkime naujų meniu elementų.

Pirma, pridėkime šešis taškus.

Į meniu įtraukime dar vieną elementą, kad jų būtų septyni.

Meniu elementų pasirinkimas

Išmokome sudaryti meniu. Tačiau kol kas tai nenaudinga, nes meniu elementai niekaip nereaguoja į mūsų paspaudimus. Norėdami apdoroti meniu elementų paspaudimus, naudokite metodą onOptionsItemSelected(). Metodas atpažįsta vartotojo pasirinktą elementą per Meniu elementas. Dabar galime nustatyti pasirinktą elementą skambučiu getItemId(), kuris grąžina meniu elemento ID. Toliau per operatorių jungiklis Viskas, ką turime padaryti, tai apibrėžti reikiamas komandas:

@Nepaisyti viešosios loginės reikšmės onOptionsItemSelected(MenuItem item) ( // Pasirinkto meniu elemento jungiklio operacijos (item.getItemId()) ( atvejis R.id.new_game: newGame(); grįžti true; atvejis R.id.help: showHelp( ) ; return true; default: return super.onOptionsItemSelected(item); ) ) public void newGame() ( edtext.setText("pasirinktas naujas žaidimas"); ) public void showHelp() ( edtext.setText("Pasirinkta pagalba" ) ;)

Paleiskite programą, iškvieskite meniu ir pasirinkite pirmąjį arba antrąjį meniu elementą. Teksto lauke turėtų pasirodyti pranešimas.

Pateiktame pavyzdyje getItemId() prašo pasirinkto meniu elemento ID ir per jungiklio pasirinkimo sakinį pradeda lyginti su identifikatoriais, kuriuos nurodėme XML šaltiniuose. Kai randamas reikiamas identifikatorius, vykdoma nurodyto meniu elemento tvarkytuvė. Jei programa nieko neaptinka, tada pareiškimas vykdomas numatytas kuri grąžina super klasę.

„Android 3.0“ galite pridėti atributą android:onClick išteklių meniu ir jums nebereikia naudoti onOptionsItemSelected(). Su pagalba android:onClick galite nurodyti norimą metodą renkantis meniu elementą.

// meniu elemento atributas nustatytas į android:onClick="onMenuClick" public void onMenuClick(MenuItem item)( edtext.setText("Pateikti pasirinktą katės elementą"); )

Programinis meniu kūrimas

Pažvelkime į programinės įrangos meniu kūrimą, kad užbaigtume vaizdą. Turėsime apibrėžti keletą meniu elementų konstantų:

// meniu elementų identifikatoriai private static final int IDM_OPEN = 101; privatus statinis galutinis int IDM_SAVE = 102; public loginis onCreateOptionsMenu(Menu menu) ( // pridėti meniu elementus menu.add(Menu.NONE, IDM_OPEN, Menu.NONE, "Open"); menu.add(Menu.NONE, IDM_SAVE, Menu.NONE, "Išsaugoti") ;)

Metodas papildyti() yra keturi parametrai:

  • grupės identifikatorius – leidžia susieti meniu elementą su kitų šio meniu elementų grupe
  • Meniu elementų pasirinkimo įvykių tvarkyklės elemento identifikatorius
  • elemento tvarka meniu – leidžia nustatyti poziciją meniu. Pagal numatytuosius nustatymus (Menu.NONE arba 0) elementai yra tokia tvarka, kokia nurodyta kode
  • pavadinimas – tekstas, kuris rodomas meniu elemente. Galite naudoti eilutės išteklius

Metodas grąžina objektą Meniu elementas, kurį galima naudoti įdiegiant papildomos savybės, pavyzdžiui, norėdami nustatyti piktogramą, spartųjį klavišą ir pan.

Jei norite sukurti meniu su piktogramomis, naudokite šį metodą setIcon ()

Menu.add(Menu.NONE, IDM_OPEN, Menu.NONE, "Open") .setIcon(R.drawable.icon_menu_open);

Dar kartą priminsime, kad piktogramas galima pridėti tik prie šešių meniu elementų (arba penkių, jei yra daugiau nei šeši elementai).

Metodas meniu „CreateOptionsMenu“. Kurdama meniu, sistema iškviečia tik vieną kartą. Jei reikia atnaujinti meniu, kai programa veikia, naudokite atgalinio skambinimo metodą onPrepareOptionsMenu().

Kai pasirenkamas meniu elementas, iškviečiamas metodas onOptionsItemSelected kuris praeina pro objektą Meniu elementas- vartotojo pasirinktas meniu elementas. Naudojant metodą getItemId Galite gauti pasirinkto meniu elemento ID. Nustačius meniu elementą, galite parašyti kodą meniu pasirinkimo įvykiui apdoroti:

Viešas loginis onOptionsItemSelected(MenuItem elementas) (perjungti (item.getItemId()) atvejis IDM_OPEN: grąžinti teisingą; atvejis IDM_SAVE: grąžinti teisingą; grąžinti klaidingą; )

Spartieji klavišai

Taip pat galite nustatyti sparčiuosius klavišus, kad galėtumėte greitai pasiekti naudodami klaviatūros simbolius keliais būdais:

  • setAlphabeticShortcut(char) – prideda simbolį
  • setNumericShortcut(int) – prideda skaičių
  • setShortcut(char, int) – prideda simbolio ir skaičiaus derinį

Pavyzdžiui, jei nustatote spartųjį klavišą setAlphabeticShortcut("q");, tada atidarę meniu (arba laikydami nuspaudę MENU klavišą), paspauskite klavišą K pasirinks šį meniu elementą. Šis spartusis klavišas (arba klavišų derinys) bus rodomas kaip patarimas, rodomas po meniu elemento pavadinimu. Naujos klaviatūros turi atskirą klavišą Ctrl, kuri veikia taip pat, kaip ir įprastose klaviatūrose.

Spartieji klavišai taip pat gali būti sukurti naudojant XML: android:alphabeticShortcut="c".

Paspaudimus galite apdoroti naudodami veiklos metodą onKeyShortcut():

@Nepaisyti viešosios loginės reikšmės onKeyShortcut(int keyCode, KeyEvent įvykis) ( jungiklis (keyCode) (atvejis KeyEvent.KEYCODE_R: Toast.makeText(this, "Reply", Toast.LENGTH_SHORT).show(); grįžti true; numatytasis: grįžti super. onKeyShortcut(rakto kodas, įvykis); ) )

Submeniu kūrimas

Submeniu gali būti įtrauktas į bet kurį meniu, išskyrus kitą submeniu. Submeniu sukuriamas atgalinio skambinimo metodu onCreateOptionsMenu() naudojant metodą addSubMenu() kuri grąžina objektą Submeniu. Prieštarauti Submeniu galite pridėti papildomų elementų į šį meniu naudodami metodą papildyti(). Pavyzdžiui:

Viešas statinis galutinis int IDM_HELP = 101; viešas statinis galutinis int IDM_NEW = 201; viešas statinis galutinis int IDM_OPEN = 202; viešas statinis galutinis int IDM_SAVE = 203; viešas statinis galutinis int IDM_CUT = 301; viešas statinis galutinis int IDM_COPY = 302; viešas statinis galutinis int IDM_PASTE = 303; @Nepaisyti viešosios loginės reikšmės onCreateOptionsMenu(Meniu meniu) ( SubMenu subMenuFile = menu.addSubMenu("Failas"); subMenuFile.add(Menu.NONE, IDM_NEW, Menu.NONE, "New"); subMenuFile.add(Menu.NONE, IDM_OP , Menu.NONE, "Atidaryti"); subMenuFile.add(Menu.NONE, IDM_SAVE, Menu.NONE, "Išsaugoti"); SubMenu subMenuEdit = menu.addSubMenu("Redaguoti"); subMenuEdit.add(Menu.NONE, IDM_CUT , Menu.NONE, "Iškirpti"); subMenuEdit.add(Menu.NONE, IDM_COPY, Menu.NONE, "Copy"); subMenuEdit.add(Menu.NONE, IDM_PASTE, Menu.NONE, "Įklijuoti"); meniu. add(Menu.NONE, IDM_HELP, Menu.NONE, "Help"); return super.onCreateOptionsMenu(menu); ) @Nepaisyti viešosios loginės reikšmės onOptionsItemSelected(MenuItem item) ( CharSequence pranešimas; jungiklis (item.getItemId()) ( atvejis IDM_NEW : message = "Pasirinktas naujas elementas"; pertrauka; atvejis IDM_OPEN: message = "Atidaryti pasirinktą elementą"; pertrauka; atvejis IDM_SAVE: message = "Išsaugoti pasirinktą elementą"; pertrauka; atvejis IDM_CUT: message = "Iškirpti pasirinktą elementą"; pertrauka; case IDM_COPY: message = "Kopijuoti pasirinktą elementą"; pertrauka; case IDM_PASTE: message = "Pasirinktas elementas įklijuoti"; pertrauka; case IDM_HELP: message = "Pasirinktas pagalbos elementas"; pertrauka; numatytasis: return false; ) // rodyti pranešimą apie pasirinktą meniu elementą Toast toast = Toast.makeText(this, message, Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER, 0, 0); tostas.show(); grįžti tiesa; )

Dabar, kai pasirenkate meniu elementą, pasirodys kitas langas su submeniu. Išbandykite patys.

Žymimųjų langelių ir radijo mygtukų pridėjimas

Prie meniu elementų galite pridėti žymimuosius laukelius arba radijo mygtukus. Norėdami pridėti žymimąjį laukelį arba radijo mygtuką prie atskiro meniu elemento, turite naudoti šį metodą setCheckable():

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

Jei reikia pridėti kelis meniu elementus su žymimaisiais laukeliais ar radijo mygtukais, galite juos sujungti į meniu grupes sukurdami atskirą identifikatorių. Meniu elementas pridedamas prie grupės naudojant metodą papildyti(), perduodamas meniu grupės identifikatorių kaip pirmąjį parametrą. Tarkime, kad paskelbėme meniu grupės Spalvos identifikatorius ir meniu elementus, kad nustatytų spalvą:

Viešas statinis galutinis int IDM_COLOR_GROUP = 400; viešas statinis galutinis int IDM_COLOR_RED = 401; viešas statinis galutinis int IDM_COLOR_GREEN = 402; viešas statinis galutinis int IDM_COLOR_BLUE = 403;

Dabar, norėdami sukurti meniu grupę su žymimaisiais laukeliais, kiekvienam meniu elementui turite priskirti grupės identifikatorių ir iškviesti metodą setGroupCheckable() visai grupei (šiuo atveju metodo skambinti nereikia setCheckable() kiekvienam meniu elementui):

SubMenu subMenuColor = meniu.addSubMenu("Spalva"); subMenuColor.add(IDM_COLOR_GROUP, IDM_COLOR_RED, Menu.NONE, "Raudona"); subMenuColor.add(IDM_COLOR_GROUP, IDM_COLOR_GREEN, Menu.NONE,"Žalia"); subMenuColor.add(IDM_COLOR_GROUP, IDM_COLOR_BLUE, Menu.NONE, "Mėlyna"); subMenuColor.setGroupCheckable(IDM_COLOR_GROUP, true, false);

Metodas setGroupCheckable() trys parametrai:

  • pirmasis parametras yra meniu grupės identifikatorius;
  • antrasis parametras yra teisingas, jei grupėje leidžiami radijo mygtukai arba žymės langeliai;
  • trečiasis parametras – nustato vieną (teisinga) arba daugybinį (klaidingą) meniu elementų pasirinkimą. Šis nustatymas iš tikrųjų lemia meniu išvaizdą – tai bus meniu su radijo mygtukais arba žymimaisiais langeliais.

    Norėdami valdyti meniu elementų pasirinkimo įvykių tvarkyklėje esančių žymimųjų laukelių ir radijo mygtukų būseną, turite parašyti:

    @Nepaisyti viešosios loginės vertės onOptionsItemSelected(MenuItem elementas) ( CharSequence pranešimas; jungiklis (item.getItemId()) ( ... atvejis IDM_COLOR_RED: // invertuoti žymės langelio būseną item.setChecked(!item.isChecked()); pranešimas = "Raudona spalva"; pertrauka; numatytoji: grąžinti klaidingą; )

    Vykdykite projektą, iškvieskite meniu ir pasirinkite meniu elementą Spalva. Turėsite submeniu su trimis elementais (raudona, žalia, mėlyna) žymimųjų laukelių pavidalu. Žymimųjų langelių ir jungiklių būsena apdorojama programos kode ir išsaugoma, kai vėl iškviečiamas meniu.

    Galite iš karto priskirti ketinimą pasirinktam meniu elementui naudodami setIntent() metodą, kuris suaktyvinamas spustelėjus elementą, jei šio įvykio neperėmė onMenuItemClickListener (nebenaudojama) arba onOptionsItemSelected tvarkyklės. Suaktyvinus ketinimą, jis perduodamas metodui startActivity.

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

    Minkštas atidarymo arba uždarymo meniu

    Jei dėl kokių nors priežasčių jums reikia programiškai atidaryti meniu (pavyzdžiui, demonstravimo tikslais), naudokite šį metodą openOptionsMenu():

    OpenOptionsMenu();

    Norėdami programiškai uždaryti meniu, naudokite metodą UždarytiOptionsMenu(), tačiau aš kartoju metodą openOptionsMenu() taip pat uždaro meniu.

    Programinis meniu elemento ištrynimas

    Tarkime, kad apibrėžėme meniu elementą xml faile:

    Norėdami pašalinti akivaizdžiai nereikalingą meniu elementą iš mūsų programos apie kates, turite pasiekti meniu elementą naudodami metodą rasti elementą () ir padaryti jį nematomu. Metodui turi būti perduota nuoroda į meniu objektą meniu „CreateOptionsMenu“. kad programa žinotų apie meniu sudėties pakeitimus.

    // klasės kintamasis Meniu meniu; @Nepaisyti viešosios loginės reikšmės onCreateOptionsMenu(meniu meniu) ( super.onCreateOptionsMenu(menu); // perduokite nuorodą į mūsų objektą this.menu = meniu; getMenuInflater().inflate(R.menu.test, menu); return true; ) / / mygtuką spustelėkite public void onSpustelėkite (View v) ( if (menu != null) ( // suraskite norimą elementą MenuItem item_dog = menu.findItem(R.id.action_dog); // padarykite jį nematomu item_dog.setVisible(false ) ) )

    Tačiau šis sprendimas turi trūkumą: jei pasuksime ekraną, veikla bus atkurta ir vėl atsiras ištrintas meniu. Kaip mes galime atsikratyti sušikto šuns?

    Turime atsiminti meniu elemento būseną ir išsaugoti jį metodo Bundle tipo objekte onSaveInstanceState, ir metodu onCreate () nuskaityti išsaugotą būseną ir perduoti ją metodui meniu PrepareOptions, kuris iškviečiamas prieš meniu parodant ekrane:

    Paketas ru.alexanderklimov.test; importuoti android.app.Activity; importuoti android.os.Bundle; importuoti android.view.Menu; importuoti android.view.MenuItem; importuoti android.view.View; public class TestActivity išplečia veiklą ( Meniu meniu; Būlio vertės išsaugotasMenuDogIsVisible; galutinė statinė eilutė KEY_MENU_DOG = "KEY_MENU_DOG"; @Nepaisyti viešosios void onCreate(Bundle savedInstanceState) ( super.onCreate(savedInstanceState); set_activityView); ret_Content./activity. meniu elemento matomumo duomenys if (savedInstanceState != null) ( savedMenuDogIsVisible = savedInstanceState.getBoolean(KEY_MENU_DOG, true); ) ) @Nepaisyti viešojo loginio onCreateOptionsMenu(Menu menu) ( super.onCreateOptions (meniu) .inflate(R.menu.test, menu); return true; ) public void onClick(View v) ( if (menu != null) ( MenuItem item_dog = menu.findItem(R.id.action_dog); // slėpti meniu elementas item_dog.setVisible(false); ) ) @Nepaisyti apsaugotos tuštumos onSaveInstanceState(Bundle outState) ( // TODO Automatiškai sugeneruotas metodas stub super.onSaveInstanceState(outState); if (menu != null) ( MenuItem item_dog = meniu. findItem(R.id.action_dog); // išsaugoti esamą meniu elemento būseną – teisinga arba klaidinga outState.putBoolean(KEY_MENU_DOG, item_dog.isVisible()); ) ) @Nepaisyti viešosios loginės vertės onPrepareOptionsMenu(Menu menu) ( if (savedMenuDogIsVisible != null) ( MenuItem item_dog = menu.findItem(R.id.action_dog); // prieš rodydami išsiaiškiname norimą meniu elemento item_dog būseną .setVisible(savedMenuDogIsVisible ); ) grąžina super.onPrepareOptionsMenu(meniu); ) )

    Aptikti, ar yra meniu mygtukas

    Senesniuose įrenginiuose buvo naudojamas tikras meniu mygtukas. Naujose versijose Android meniu pašalintas iš ActionBar ir jo kaip atskiro mygtuko buvimas tapo neprivalomas. Tačiau daugelis gamintojų vis dar gamina telefonus su meniu mygtuku. Norėdami nustatyti, ar toks mygtukas egzistuoja, pridėta „Android 14“. naujas metodas, kuri leis jums nustatyti šio mygtuko buvimą.

    If(Build.VERSION.SDK_INT<= 10 || (Build.VERSION.SDK_INT >= 14 && ViewConfiguration.get(this).hasPermanentMenuKey())) ( // yra meniu klavišas Toast.makeText(this, "Meniu mygtukas yra", Toast.LENGTH_LONG).show(); ) else ( // Ne meniu klavišas Toast.makeText(tai, "Nėra meniu mygtuko", Toast.LENGTH_LONG).show(); )

    Meniu žymėjimas

    Šiuolaikiniuose įrenginiuose meniu yra dalis Veiksmų juosta. Ir jūs galite tinkinti meniu išdėstymą naudodami XML.

    Tarkime, kad pasirinkote šią parinktį:

    Atribute showAsAction nenaudokite vertės niekada, kitaip ženklų nematysite. Pats žymėjimas nurodomas per atributą veiksmo išdėstymas. Žymėjimo kodas:

    Meniu fragmentais

    Meniu gali būti ne tik veiklos, bet ir fragmento dalis. Veikimo principas praktiškai tas pats. Fragmentas turi atitinkamą metodą.

    @Override public void onCreateOptionsMenu (meniu meniu, MenuInflater inflater) ( super.onCreateOptionsMenu (meniu, pripūtimo priemonė); inflater.inflate (R.menu.fragment_crime_list, meniu); )

    Fragment Manager atsiliepti į skambutį onCreateOptionsMenu() kai veikla sulaukia atgalinio skambučio onCreateOptionsMenu() iš sistemos. Turite aiškiai informuoti vadovą Fragment Manager kad fragmentas turėtų sulaukti skambučio onCreateOptionsMenu(). Šiuo tikslu metodas vadinamas setHasOptionsMenu():

    // @Override fragmento kode public void onCreate(Bundle savedInstanceState) ( super.onCreate(savedInstanceState); setHasOptionsMenu(true); getActivity().setTitle(R.string.cat); ... )

Android palaiko kelis meniu tipus. Pirma – telefone yra atskiras mygtukas Meniu(senesniuose telefonuose), kurį paspaudus pasirodo meniu. Naujuose įrenginiuose atskiras mygtukas buvo pašalintas ir pakeistas meniu piktograma trijų taškų pavidalu vertikalioje padėtyje. Antrasis tipas – kontekstinis meniu, atsirandantis paspaudus ir palaikius pirštą ant ekrano norimoje vietoje (galite paspausti ir palaikyti centrinį telefono mygtuką). Kontekstinis meniu savo ruožtu gali turėti submeniu. Šiandien susipažinsime su pirmojo tipo meniu. Šiame straipsnyje bus aptartas darbas su meniu naujuose veikiančiuose įrenginiuose Android valdymas 4.0 ir naujesnės versijos.

Šablone Tuščia veikla meniu nėra, todėl jį sukursime patys. Tai padės suprasti darbo principą ir susidaryti projekto apžvalgą. Norint pasirinkti meniu elementus, nebūtina atsiminti klasių, metodų ir kodų pavadinimų. Kituose šablonuose meniu bus integruotas ir galėsite jį naudoti iš karto.

Sukurti naujas projektas pagrįstas Tuščia veikla ir paleiskite jį. Meniu dar nėra.

Sukurkime faile keletą eilučių išteklių res/values/strings.xml, kuri bus atsakinga už meniu elementus:

Nustatymai Katė Katė Kitty

Dabar sukurkite naują aplanką Meniu aplanke res res, | Nauja | Katalogas). Tada sukurkite failą sukurtame aplanke meniu_main.xml- pavadinimas rodo, kad meniu yra susijęs su pagrindine veikla Pagrindinis užsiėmimas(dešiniuoju pelės mygtuku spustelėkite aplanką Meniu | Nauja | Meniu išteklių failas). Jei kuriate programą su keliais ekranais, kiekviena veikla turės atskirą meniu su savo nustatymais. Kol kas atidarykime failą meniu_main.xml ir pridėkite savo kodą prie gauto šablono:

Atidarykime failą Pagrindinis užsiėmimas. Šiuo metu yra tik vienas metodas onCreate (). Pridėkime naują metodą onCreateOptionsMenu(). Šis metodas yra atsakingas už veiklos meniu išvaizdą. Pasirinkite meniu studijoje Kodas| ir kitame lange pradėkite įvesti metodo pavadinimą naudodami pirmąsias raides. Galite įvesti pirmosiomis didžiosiomis raidėmis, t.y. ocom ( o n C reate O galimybės M enu), kad greitai rastumėte reikiamą eilutę. Paspausk mygtuką Gerai ir gauname ruošinį.

@Nepaisyti viešosios loginės reikšmės onCreateOptionsMenu(meniu meniu) (grįžti super.onCreateOptionsMenu(meniu); )

Prie šablono pridedame metodą, kuris paima duomenis iš meniu išteklių ir konvertuoja juos į meniu elementus ekrane.

@Nepaisyti viešosios loginės vertės onCreateOptionsMenu(Meniu meniu) ( getMenuInflater().inflate(R.menu.menu_main, menu); return true; )

Pagal metodą pripūsti () Jūs nurodote meniu šaltinį ( R.menu.menu_main) ir klasės objektas Meniu.

Anglų kalba „išpūsti“ verčiama kaip išpūsti, t.y. „Android“ kūrėjų teigimu, objektą, pavyzdžiui, meniu, pripučiame duomenimis. Tačiau iš tikrųjų žodis „išpūsti“ kilęs iš šios frazės bute- į butą. Sena tradicija į butą pirmiausia įsileisti katę, kuri apžiūrinėja visus namo kampelius ir pareiškia sutikimą jame gyventi. Taip paleidžiame duomenis iš XML failo į MenuInflater objektą.

Pradėkite projektą. Dabar dešinėje antraštės pusėje pamatysite trijų taškų, išdėstytų vertikalioje linijoje, piktogramą. Spustelėkite piktogramą, kad pamatytumėte meniu elementą Nustatymai.

Kaip galite atspėti, elementas daiktas yra atsakingas už atskirą meniu punktą. Tuo pačiu principu pridėkime dar tris elementus, pakeisdami tik meniu identifikatorių ir tekstą:

Vykdykite projektą ir bandykite dar kartą iškviesti meniu. Pamatysite tris naujus elementus.

Galimybės id Ir titulą nereikia jokio paaiškinimo. Parametras orderInCategory leidžia nustatyti savo meniu elementų rodymo tvarką. Tarkime, kad sukūrėte penkis meniu elementus, bet dar neapsisprendėte, kokia tvarka jie bus rodomi ekrane. Norėdami išvengti nuolatinio meniu elementų kodo blokų perkėlimo norima tvarka, galite naudoti šią parinktį.

Ir galiausiai, svarbus atributas programa:showAsAction apibrėžia meniu elgesį Veiksmų juosta. Reikšmė niekada reiškia, kad meniu punktas turi atsirasti ne antraštėje, o tik iššokančiame meniu, t.y. atsilikti trimis taškais. Jei nustatote vertę visada, tada tašką Nustatymai bus nedelsiant rodomas jūsų paraiškos antraštėje. Taip pat galimos vertės ifRooms, su tekstu Ir CollapseActionView. Išbandykite patys. Pavyzdžiui, ifRoom rodo meniu elementą, jei yra vietos. Jei taškų bus daug, jie tik trukdys. Paprastai šioje versijoje jie išleidžiami labai trumpas žodis arba piktograma dažnos operacijos kad nereikėtų be reikalo spustelėti tris taškus.

Atkreipkite dėmesį į atributą programa:showAsAction, kuri nurodo vardų erdvę xmlns:app="http://schemas.android.com/apk/res-auto". Buvo laikas, kai tokios vardų erdvės nebuvo ir projektai naudojo šį atributą android:showAsAction iš standartinės vardų srities. Jei studija skundžiasi klaida, redaguokite kodą.

Kol kas meniu punktai neatlieka jokio naudingo darbo. Bet koks elemento paspaudimas tiesiog uždaro meniu be matomų pasekmių. Dar neparašėme kodo paspaudimams apdoroti.

Meniu elementų pasirinkimas

Išmokome sudaryti meniu. Tačiau kol kas tai nenaudinga, nes meniu elementai niekaip nereaguoja į mūsų paspaudimus. Kitas metodas naudojamas meniu elementų paspaudimams valdyti. onOptionsItemSelected(). Pridėkime metodą tuo pačiu principu kaip ir ankstesniame pavyzdyje. Paimkime ruošinį.

@Nepaisyti viešosios loginės reikšmės onOptionsItemSelected(MenuItem elementas) ( grąžinti super.onOptionsItemSelected(item); )

Parametras daiktas yra atsakingas už meniu punktą. Naudodami metodą turėtumėte gauti meniu ID getItemId() ir nurodykite jo kodą. Kadangi meniu dažniausiai susideda iš kelių punktų, patogu naudoti konstrukcijas jei/kitaip arba jungiklis. Norėdami rodyti informaciją, naudosime tekstinę etiketę. Pridėkite komponentą prie veiklos ekrano TextView. Galite naudoti esamą TextView su užrašu „Labas pasauli!“, tiesiog suteikite jam identifikatorių.

android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Sveikas, pasauli!"/>

Pridėkime kodą prie pasirinkto meniu elemento šablono:

@Nepaisyti viešosios loginės reikšmės onOptionsItemSelected(MenuItem item) ( // gauti pasirinkto meniu elemento identifikatorių int id = item.getItemId(); TextView infoTextView = (TextView) findViewById(R.id.textView); // Pasirinktos operacijos meniu elemento jungiklis ( id) (atvejis R.id.action_cat1: infoTextView.setText("Jūs pasirinkote katę!"); return true; atvejis R.id.action_cat2: infoTextView.setText("Jūs pasirinkote katę!"); return true; case R. id.action_cat3: infoTextView.setText("Jūs pasirinkote kačiuką!"); return true; default: return super.onOptionsItemSelected(item); ) )

Paleiskite programą, iškvieskite meniu ir pasirinkite bet kurį meniu elementą. Teksto lauke turėtų pasirodyti pranešimas.

Egzistuoja alternatyvus būdas per XML, panašus į mygtukų paspaudimų valdymą (nuo Android 3.0). Galite pridėti atributą android:onClick meniu šaltiniuose ir jums nereikia naudoti metodo iškvietimo onOptionsItemSelected(). Su pagalba android:onClick pasirinkdami meniu elementą galite nurodyti norimą metodą. Pridėkite šį atributą prie elemento Nustatymai

Dabar veiklos kode parašysime taip:

// Nustatymai meniu elemento atributas nustatytas į android:onClick="onSettingsMenuClick" public void onSettingsMenuClick(MenuItem item) ( TextView infoTextView = (TextView) findViewById(R.id.textView); infoTextView.setText("Jūs pasirinkote nustatymus prekė, geriau rinkčiausi katę“);)

Jungikliai

Meniu elementų išvaizda gali būti pakeista į rodinį su jungikliais. Norėdami tai padaryti, turite pridėti elementą grupė su atributu android:checkableBehavior="single":

Nematau daug prasmės šiame režime. Ir mes to nesvarstysime.

Dizaino režimas

Android Studio 2.2 pridėjo grafinį meniu kūrimo režimą, kuris yra panašus į įrankių juostą, skirtą naujų komponentų įtraukimui į ekraną. Meniu skydelis susideda iš keturių elementų: Meniu elementas, Ieškoti elemento, Meniu, Grupė.

Principas tas pats, pasirinkite norimą elementą ir vilkite jį į ekraną į meniu sritį. Jei išmokote rankiniu būdu kurti meniu, tada šis metodas nesukels jums jokių sunkumų. Su juo galite greitai nubraižyti meniu struktūrą ir ją koreguoti rankiniu būdu.

Panašūs straipsniai