NaujienosApžvalgosNuomonėsIT RenginiaiPamokosPatarimaiSmulkmėHumorasTapk autoriumi

Android pamokos: Pranešimų naudojimas programoje

Kategorija: PAMOKOS    Autorius: Gediminas Ubartas    Paskelbta: 2011-09-27 14:42
Pasidalinti per Twitter

Pastaruoju metu vis dažniau tenka pažvelgti į kitų Android programų kodus. Labai dažnai pamatęs kodą suprantu, kad programuotojas nepagalvojo apie kodo aiškumą, lengvesnį jo modifikavimą. Penktojoje pamokoje apie programavimą Android telefonams, parodysiu kaip reikia sukurti ir naudoti bendrus tekstinius (String tipo) pranešimus visoje mūsų programoje.

Kiekviena Android programa turi tekstinius pranešimus. Visi šie pranešimai turi būti susieti su programos ištekliais (resources), o ne būti paprasčiausia parašyti programoje. Tokių tekstinių pranešimų naudojimas programai suteikia daug privalumų:

  • Tokius tekstiniu pranešimus labai lengva prižiūrėti, keisti. Svarbu tai, kad pranešimus gali keisti netik programuotojas.
  • Vienas pranešimas gali būti naudojamas daugelyje programos vietų.
  • Programos kalbos pakeitimas labai lengvai atliekamas: nurodoma tik tekstinių pranešimų išteklių byla.

Sukuriame išteklių bylą

Tekstinių pranešimai yra saugomi /res/values/strings.xml byloje. Šios bylos pagalba mes galime aprašyti tekstinius pranešimus, o vėliau juos globaliai naudoti programoje. Pavyzdžiui, žemiau pateiktame kode mes apibrėžiame programos pavadinimą ir pranešimo tekstą.

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, SveikasPasauli!</string>
<string name="app_name">PirmojiPrograma</string>
</resources>

Naudojame aprašytus pranešimus savo programoje

Norėdami gauti pranešimą iš išteklių bylos, mums paprasčiausiai reikia pasinaudoti metodu getString(). Žemiau pateiktas kodas turi būti naudojamas Activity klasėje norint gauti reikiamą tekstinį pranešimą.

String helloText = getResources().getString(R.string.hello);

Apibrėžiame ir naudojame pranešimų masyvą

Labai dažnai galime susidurti su atvejais, kai mums reikia apibrėžti tam tikrą tekstinių pranešimų sąrašą. Žinoma, tai galime padaryti paprasčiausia daug kartų pakartoję anksčiau aprašytą metodą, bei saugodami masyvą atmintyje. Toks būdas netik neefektyvus, bet gana keblus. Norėdami gauti tokį pat rezultatą, dar vienoje išteklių byloje – /res/values/arrays.xml sukuriame masyvą, kurį galėsime naudoti savo programoje.

Minėtoje byloje sukuriame masyvą, su jo elementais:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="game_cat">
<item>@string/cat_human</item>
<item>@string/cat_animals</item>
<item>@string/cat_sport</item>
<item>@string/cat_colors</item>
<item>@string/cat_weapons</item>
<item>@string/cat_weather</item>
</string-array>
</resources>

Norint gauti šį masyvą mūsų programoje, mums paprasčiausiai užtenka programoje įterpti šį kodą:

String[] gameCat = getResources().getStringArray(R.array.game_cat);

Panaudojimas

Šis statinis masyvų sukūrimas gali būti panaudojamas įvairiausiose situacijose: koreguojant programos nustatymus, renkantis tam tikras kategorijas ir t.t. Žemiau pateiktas pavyzdinis kodas yra paimtas iš mano sukurto žaidimo „Pakaruoklis“. Visas kategorijų masyvas naudojamas, kai vartotojas turi pasirinkti žaidimo kategoriją.

String[] gameCat = getResources().getStringArray(R.array.game_cat);
new AlertDialog.Builder(this).setTitle(R.string.select_cat_title)
.setItems(cRaces,new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialoginterface, int i) {
 startGame(i);
}}).show();

Štai kaip kodas atrodo sukompiliavus ir paleidus programą:

Pasidalinti per Twitter
 
Straipsnio autorius:
Gediminas Ubartas Gediminas Ubartas
http://www.gedzis.net  ||  @Gedzis  ||  Facebook profilis  ||  Google+ profilis
Jaunas programuotojas kilęs iš Telšių, o dabar gyvenantis ir dirbantis Vilniuje. Besidomintis programavimu, Android OS. Dabar studijuoja Verslo informatikos specialybę, Mykolo Romerio Universitete. Laisvalaikį dažniausiai praleidžia krepšinio aikštelėje, būdamas su draugais arba tiesiog kurdamas įvairiausius projektus.
 
Rekomenduojame, jei patiko šis straipsnis:
Panašūs įrašai Kiti autoriaus įrašai Kiti kategorijos įrašai

Visi komentarai (3)
0
Petras: (Reputacija: +10)
2011-10-17 01:33
Alternatyva būtų String’us nurodyt klasėje kaip private static final String reikšmes. Tokie kintamieji yra žymiai greičiau pasiekiami (kalbu apie programos veikimo greitį, o ne patogumą kode) nei naudojant resursus :-)

Žinoma toks menkas dalykas kaip reikšmės gavimas iš resursų neturėtų įtakot programos veikimo spartos, bet tik šiaip pasakau. Vis dėlto programuojam ne PC su neribotais ištekliais, o mažam aparačiuke :-)


0
Gediminas Ubartas: (Reputacija: +81)
2011-10-17 08:08
Gediminas Ubartas
Petras:
Alternatyva būtų String'us nurodyt klasėje kaip private static final String reikšmes. Tokie kintamieji yra žymiai greičiau pasiekiami (kalbu apie programos veikimo greitį, o ne patogumą kode) nei naudojant resursus :-) Žinoma toks menkas dalykas kaip reikšmės gavimas iš resursų neturėtų įtakot programos veikimo spartos, bet tik šiaip pasakau. Vis dėlto programuojam ne PC su neribotais ištekliais, o mažam aparačiuke :-)
Dėl programos greitumo nesu tikras, bet manau kad tu iš dalie teisus.
Manau, kad dėl programos tam tikrų ypatybių, programuotojo darbo palengvinimo ir lengvo programos konfigūravimo reikia investuoti tas kelias milisekundės dalis, kad būtų naudojami pranešimai


0
Petras: (Reputacija: +10)
2011-10-17 10:00
Gediminas Ubartas:
Dėl programos greitumo nesu tikras, bet manau kad tu iš dalie teisus. Manau, kad dėl programos tam tikrų ypatybių, programuotojo darbo palengvinimo ir lengvo programos konfigūravimo reikia investuoti tas kelias milisekundės dalis, kad būtų naudojami pranešimai
Kai programa tampa pakankamai sudėtinga, imi matyt ryškius greičio pokyčius net kai ArrayList’us pakeiti į HashSet’us :-)


Parašykite komentarą:

Jūsų vardas (privalomas): Jūsų el.paštas (neskelbsime): Jūsų tinklalapis (neprivalomas):
Komentaras:

Hey.lt - Nemokamas lankytojų skaitliukas