PI;N
(angl. TL;DR
)
Valgių apskaitos programėlė "Maisto bankas": subalansuota "Maisto banko" savanoriams, bet tinka ir "Maltiečių ordino" virtuvių šefams bei kebabinių gaspadinėms!
Programėlė "Maisto bankas" yra licencijuota pagal "Apache License" sąlygas, vadinasi, programinę įrangą galima laisvai:
- Naudoti bet kokiu tikslu.
- Modifikuoti.
- Platinti (tiek originalią, tiek modifikuotą versijas). Vienintelė ribojanti sąlyga - privaloma išsaugoti autorines teises ir atsišaukimą (jei toks yra) bei nereikalauti jokių autorinių honorarų.
Šiame dokumente galite susipažinti, kaip vyksta programėlės tobulinimas, apauginant ją nauju funkcionalumu ir koreguojant ar atsisakant senesnio, nebeatitinkančio vartotojų poreikių (arba bankrutavus kokiam nors API teikėjui).
Idėjų semtasi iš kyborgų korifėjaus Viliaus Kraujučio 2014 m. vasarį "Vinted" patalpose vestų "Android" mokymų, kurių metu buvo šnekučiuojamasi programuotojams skirtoje tarnyboje "Gitter".
Jei norite prisidėti, tobulinant aplikaciją, turite lokaliai įsidiegti:
- Naujausią oficialią integruotą "Android" programavimo aplinką "Android Studio".
- Projekto buildinimo automatizavimo įrankį "Gradle" (v2.2.1).
- Programavimui "Java" kalba skirtą priemonę "Java SE Development Kit 8".
Pasinaudojus "Android Studio" vedliu, iš "GitHub" kodo versijavimo sistemos galima parsiųsti programėlės struktūrą:
VCS --> Checkout from Version Control... --> GitHub.
Atsidariusiame lange į "Vcs Version URL" laukelį įveskite:
https://github.com/apuokenas/MaistoBankas.git
,
o kaip "Parent Directory" nurodykite vietinį aplanką, kuriame talpinsite projekto failus.
P. S. Savo mašinoje reikia turėti git.exe bylą, kurios adresas įvedamas per "Settings" meniu:
File --> Settings --> Version Control --> Git.
Lauke "Path to Git executable" nurodomas kelias iki minėto failo. Pvz., jei esate "Windows" vartotojas:
C:\Users[Vartotojas]\AppData\Local\GitHub\PortableGit_[40_raidžių_ir_skaičių]\bin\git.exe.
Kodo modifikacijas ir susijusius komentarus galite peržiūrėti "GitHub" pakeitimų įrašuose.
- Mygtukas "Nustatymai", atidarantis produktų rinkimo (parduotuvės) arba valgių gaminimo vietos informacijos suvedimo
fragment
'ą. - Mygtukas "Skenuoti".
- Sąrašas (
ListView
) nuskenuotų prekių išvedimui į ekraną.
Tai paprasta forma, kurioje randami keli įvesties laukeliai:
- Miestas
- Parduotuvės adresas
- Parduotuvės pavadinimas
- Savanorio vardas
Ir, žinoma, mygelis "Išsaugoti".
Brūkšninius kodus skenuoja kita į "Maisto banką" integruota programėlė - "ZXing" (dar žinoma kaip "Zebra Crossing").
Skenavimas vykdomas, naudojantis Intent
'u.
Instrukcijas, kaip visa tai integruoti, galite rasti čia.
Siekdamas geriau suprasti Activity
ir Fragment
gyvavimo ciklus (angl. lifecycle), peržiūrėjau atitinkamą diagramą, kuria remiantis, įdėjau Log.d()
komandas į BaseActivity
šiuose metoduose:
- OnCreate()
- OnStart()
- OnResume()
- OnPause()
- OnStop()
- OnDestroy()
Analogiškai Activity
gyvavimo ciklo loginimo atvejui, pasidariau Fragment
gyvavimo ciklo registravimą.
Apie Fragment
gyvavimo ciklus galima pasiskaityti oficialioje "Google" dokumentacijoje
Taigi reikia susikurti BaseFragment
pagrindinę klasę, kurioje patalpinti loginimo metodai:
- onAttach()
- onCreate()
- onCreateView()
- onActivityCreated()
- onStart()
- onResume()
- onPause()
- onStop()
- onDestroyView()
- onDestroy()
- onDetach()
Funkcionalumas įgyvendintas, pasitelkus "ORM Lite".
Prekė Item
:
barcode
- prekės brūkšninis kodasname
- prekės pavadinimasprice
- prekės kainaweight
- prekės svoris (bnors fizikiškai tiksliau būtų vadint mase)image_url
- prekės nuotrauka
Nuskenuota prekė ScannedItem
:
id
- unikalus konkretų skenavimą identifikuojantis numerisbarcode
- prekės brūkšninis kodastime
- skenavimo laikasplace
- skenavimo vietavolunteer
- savanoris (taip pat gali būti virtuvės šefas ar namų šeimininkė, priklausomai nuo aplinkybių, kuriomis naudojama aplikacija)
Sukuriamas ir duomenų bazėn patalpinamas naujas ScannedItem
objektas.
Apie tai, kaip susikurti "ORM Lite" duomenų bazės Helper
klasę, galima sužinoti iš šių šaltinių:
- ORM naudojimas kartu su "Android" operacine sistema
- ORM taikymo "Android'e" pavyzdžiai
- Konkretus taikomasis pavyzdys "GitHub'e"
Pasinaudojant Helper
klase, įrašas išsaugomas duomenų bazėje.
MainFragment
'eonResume
metode iškviečiamadbHelper.getScannedItemDao().queryForAll()
funkcija.- Sąrašas bus atvaizduotas, sukūrus naują adapterį.
- Sąrašo eilutės vaizduojamos sukurtame
layout
'e (kol kas - tik suTextView
, skirtu ekranan išvesti brūkšninį kodą).
- Duomenys apie maisto produktą gaunami ir atitinkamas duomenų modelis sukuriamas, naudojant REST klientą "Retrofit".
- Prekės informacijos talpinimas duomenų bazėje.
- Prekės informacijos pavaizdavimas sąraše.
- Prekės paveiksliukas rodomas, pasitelkus paveikslėlių siuntimo ir kešavimo (talpinimo į podėlį) biblioteką "Picasso".
- Rodoma papildoma prekės informacija.
Nustatymai
mygtukas įtrauktas į meniu.Skenuoti
mygtukas centruojamas apačioje.- Naujausi nuskenuoti įrašai rodomi viršuje.
- Skenavimo mygtukas yra animuotas.
Ne pagal "Material Design" principus sukurtos vartotojo sąsajos pavyzdys: