Podcast
Questions and Answers
Katera metoda življenjskega cikla Activity
se kliče po onCreate
in preden aktivnost postane interaktivna?
Katera metoda življenjskega cikla Activity
se kliče po onCreate
in preden aktivnost postane interaktivna?
- `onResume`
- `onStop`
- `onPause`
- `onStart` (correct)
V katerem stanju življenjskega cikla Activity
je aktivnost vidna, vendar ne nujno interaktivna?
V katerem stanju življenjskega cikla Activity
je aktivnost vidna, vendar ne nujno interaktivna?
- Po `onStart` (correct)
- Med `onPause` in `onStop`
- Po `onResume`
- Med `onCreate` in `onStart`
Kdaj je najbolj primeren čas za osvežitev podatkov in virov (npr. začetek predvajanja zvoka ali predogled kamere) v življenjskem ciklu Activity
?
Kdaj je najbolj primeren čas za osvežitev podatkov in virov (npr. začetek predvajanja zvoka ali predogled kamere) v življenjskem ciklu Activity
?
- V metodi `onStop`
- V metodi `onResume` (correct)
- V metodi `onPause`
- V metodi `onCreate`
V kateri metodi življenjskega cikla Activity
je priporočljivo shraniti trajne podatke aplikacije?
V kateri metodi življenjskega cikla Activity
je priporočljivo shraniti trajne podatke aplikacije?
Katera metoda življenjskega cikla Activity
se uporablja za sprostitev virov in zaustavitev niti, ko aktivnost ni več vidna uporabniku in se umika v ozadje?
Katera metoda življenjskega cikla Activity
se uporablja za sprostitev virov in zaustavitev niti, ko aktivnost ni več vidna uporabniku in se umika v ozadje?
Kaj je glavna odgovornost metode onDestroy
v življenjskem ciklu Activity
?
Kaj je glavna odgovornost metode onDestroy
v življenjskem ciklu Activity
?
Glede na primer kode v Kotlinu, kaj se izpiše v konzolo, ko nastavimo uniNews.newestArticle = "www.um.si"
?
Glede na primer kode v Kotlinu, kaj se izpiše v konzolo, ko nastavimo uniNews.newestArticle = "www.um.si"
?
Katera trditev pravilno opisuje namen vmesnika ISubject
v vzorcu opazovalec?
Katera trditev pravilno opisuje namen vmesnika ISubject
v vzorcu opazovalec?
Kateri od naslednjih razlogov ni glavni vzrok za zapletenost upravljanja življenjskega cikla aktivnosti v Androidu?
Kateri od naslednjih razlogov ni glavni vzrok za zapletenost upravljanja življenjskega cikla aktivnosti v Androidu?
Katera metoda se kliče ob uničenju aktivnosti in omogoča preverjanje, ali se aktivnost zaključuje?
Katera metoda se kliče ob uničenju aktivnosti in omogoča preverjanje, ali se aktivnost zaključuje?
Kateri razred v Androidu se uporablja za prenos podatkov med različnimi komponentami aplikacije in omogoča lastno implementacijo serializacije?
Kateri razred v Androidu se uporablja za prenos podatkov med različnimi komponentami aplikacije in omogoča lastno implementacijo serializacije?
Kakšna je glavna omejitev uporabe razreda Bundle
za prenos podatkov med aktivnostmi?
Kakšna je glavna omejitev uporabe razreda Bundle
za prenos podatkov med aktivnostmi?
Katera od naslednjih možnosti ni primer vira, ki ga lahko najdemo v projektu Android?
Katera od naslednjih možnosti ni primer vira, ki ga lahko najdemo v projektu Android?
Zakaj se za zagon druge aktivnosti uporablja Intent
namesto metode Run()
ali Execute()
?
Zakaj se za zagon druge aktivnosti uporablja Intent
namesto metode Run()
ali Execute()
?
V kateri mapi znotraj strukture projekta Android se običajno nahajajo viri aplikacije?
V kateri mapi znotraj strukture projekta Android se običajno nahajajo viri aplikacije?
Kateri parameter v klicu Intent(this, SecondActivity::class.java)
določa, kje se bo aktivnost vrnila po zaključku SecondActivity
?
Kateri parameter v klicu Intent(this, SecondActivity::class.java)
določa, kje se bo aktivnost vrnila po zaključku SecondActivity
?
Katera vrsta datoteke se uporablja za opis Property Animations v Androidu?
Katera vrsta datoteke se uporablja za opis Property Animations v Androidu?
Katera komponenta Android sistema definira lastnosti aktivnosti, kot so ikone, labele in teme ter deklarira, kako se aktivnost lahko uporablja?
Katera komponenta Android sistema definira lastnosti aktivnosti, kot so ikone, labele in teme ter deklarira, kako se aktivnost lahko uporablja?
Katero vrsto virov najdemo v mapi drawable
?
Katero vrsto virov najdemo v mapi drawable
?
Kako bi pravilno ustvarili implicitni Intent
, ki uporabnika preusmeri na spletno stran https://www.example.com
?
Kako bi pravilno ustvarili implicitni Intent
, ki uporabnika preusmeri na spletno stran https://www.example.com
?
Kaj je glavna funkcija datotek v mapi layout
?
Kaj je glavna funkcija datotek v mapi layout
?
Za kaj se uporablja mapa values
v virih Android aplikacije?
Za kaj se uporablja mapa values
v virih Android aplikacije?
Kakšen tip datotek bi najverjetneje shranili v mapi raw
?
Kakšen tip datotek bi najverjetneje shranili v mapi raw
?
Kako lahko samodejno ustvarimo vrednosti virov v Android studiu?
Kako lahko samodejno ustvarimo vrednosti virov v Android studiu?
Kateri pristop razvoja programske opreme je znan po tem, da poudarja integracijo izdelkov v specifično računalniško okolje z namenom zmanjšanja razvojnih tveganj?
Kateri pristop razvoja programske opreme je znan po tem, da poudarja integracijo izdelkov v specifično računalniško okolje z namenom zmanjšanja razvojnih tveganj?
Kateri cilj NI značilen za platformno odvisen razvoj aplikacij?
Kateri cilj NI značilen za platformno odvisen razvoj aplikacij?
Kateri od naštetih jezikov je primarno namenjen razvoju aplikacij za JVM, Android, JavaScript in Native?
Kateri od naštetih jezikov je primarno namenjen razvoju aplikacij za JVM, Android, JavaScript in Native?
Katero podjetje je primarno odgovorno za razvoj programskega jezika Kotlin?
Katero podjetje je primarno odgovorno za razvoj programskega jezika Kotlin?
Kaj pomeni, da programski jezik 'cilja na JVM'?
Kaj pomeni, da programski jezik 'cilja na JVM'?
Zakaj je združljivost Kotlin kode z Java kodo pomembna za razvoj Android aplikacij?
Zakaj je združljivost Kotlin kode z Java kodo pomembna za razvoj Android aplikacij?
Katere od naslednjih možnosti NI prednost uporabe Kotlina pri razvoju Android aplikacij, če že poznamo Javo?
Katere od naslednjih možnosti NI prednost uporabe Kotlina pri razvoju Android aplikacij, če že poznamo Javo?
Kako sprotni pristop ocenjevanja vpliva na končno oceno, v primerjavi s klasičnim pristopom?
Kako sprotni pristop ocenjevanja vpliva na končno oceno, v primerjavi s klasičnim pristopom?
Kateri načrtovalski vzorec omogoča 'komunikacijo ena proti mnogo' in se uporablja za obveščanje različnih objektov o spremembi stanja?
Kateri načrtovalski vzorec omogoča 'komunikacijo ena proti mnogo' in se uporablja za obveščanje različnih objektov o spremembi stanja?
Katera od naslednjih situacij je najmanj primerna za uporabo načrtovalskega vzorca 'Opazovalec'?
Katera od naslednjih situacij je najmanj primerna za uporabo načrtovalskega vzorca 'Opazovalec'?
Katera od naslednjih komponent ni tipična za implementacijo načrtovalskega vzorca 'Opazovalec'?
Katera od naslednjih komponent ni tipična za implementacijo načrtovalskega vzorca 'Opazovalec'?
Kaj pomeni 'šibka sklopljenost' (loose coupling) v kontekstu načrtovalskega vzorca 'Opazovalec'?
Kaj pomeni 'šibka sklopljenost' (loose coupling) v kontekstu načrtovalskega vzorca 'Opazovalec'?
Kako razred ConcreteSubject
uporablja metodo notify()
v načrtovalskem vzorcu 'Opazovalec'?
Kako razred ConcreteSubject
uporablja metodo notify()
v načrtovalskem vzorcu 'Opazovalec'?
Kateri princip SOLID načel je najbolj tesno povezan z načrtovalskim vzorcem 'Opazovalec' in zakaj?
Kateri princip SOLID načel je najbolj tesno povezan z načrtovalskim vzorcem 'Opazovalec' in zakaj?
V kontekstu kode podane v onCreate()
metodi, kaj se izpiše v konzolo, ko uporabnik pritisne na gumb btnAdd
?
V kontekstu kode podane v onCreate()
metodi, kaj se izpiše v konzolo, ko uporabnik pritisne na gumb btnAdd
?
Čemu služi vrstica kode return v?.onTouchEvent(event) ?: true
v metodi onTouch
?
Čemu služi vrstica kode return v?.onTouchEvent(event) ?: true
v metodi onTouch
?
Katera metoda se uporablja za prenos podatkov med dvema aktivnostima, kjer prva aktivnost zažene drugo in ji posreduje vrednost YEAR
?
Katera metoda se uporablja za prenos podatkov med dvema aktivnostima, kjer prva aktivnost zažene drugo in ji posreduje vrednost YEAR
?
Kaj je namen metode registerForActivityResult
v povezavi z zagonom aktivnosti?
Kaj je namen metode registerForActivityResult
v povezavi z zagonom aktivnosti?
Kateri launchMode
zagotavlja, da bo sistem ustvaril novo instanco aktivnosti, ne glede na to, ali že obstaja instanca te aktivnosti v sistemu?
Kateri launchMode
zagotavlja, da bo sistem ustvaril novo instanco aktivnosti, ne glede na to, ali že obstaja instanca te aktivnosti v sistemu?
Aktivnost A zažene aktivnost B z namenom pridobitve imena uporabnika. Kateri korak je nujen v aktivnosti B, preden se zaključi, da se zagotovi, da se ime posreduje nazaj aktivnosti A?
Aktivnost A zažene aktivnost B z namenom pridobitve imena uporabnika. Kateri korak je nujen v aktivnosti B, preden se zaključi, da se zagotovi, da se ime posreduje nazaj aktivnosti A?
Kako aktivnost pridobi podatke, poslane z metodo putExtra()
iz druge aktivnosti?
Kako aktivnost pridobi podatke, poslane z metodo putExtra()
iz druge aktivnosti?
Katera izmed naslednjih možnosti pravilno opisuje razliko med singleTask
in singleInstance
launchMode
?
Katera izmed naslednjih možnosti pravilno opisuje razliko med singleTask
in singleInstance
launchMode
?
V prvem activity imamo kodo getContent.launch(intent)
in v drugem setResult(RESULT_OK, data)
. Kaj se zgodi, če v drugem activity namesto RESULT_OK
nastavimo RESULT_CANCELED
?
V prvem activity imamo kodo getContent.launch(intent)
in v drugem setResult(RESULT_OK, data)
. Kaj se zgodi, če v drugem activity namesto RESULT_OK
nastavimo RESULT_CANCELED
?
Želimo implementirati skeniranje QR kode. Kateri korak je ključen pri uporabi registerForActivityResult
v povezavi z zagonom aktivnosti za skeniranje?
Želimo implementirati skeniranje QR kode. Kateri korak je ključen pri uporabi registerForActivityResult
v povezavi z zagonom aktivnosti za skeniranje?
Flashcards
Platformno odvisen razvoj
Platformno odvisen razvoj
Pristop, ki poudarja integracijo izdelkov v specifično računalniško okolje (programska in strojna oprema), da se zmanjšajo razvojna tveganja, stroški in čas trženja.
Ocenjevanje (platformno odvisen razvoj)
Ocenjevanje (platformno odvisen razvoj)
Laboratorijske vaje (50%), kolokviji (2 x 25%) ali pisni izpit (50%). Bonus do 3% za prisotnost na predavanjih (>80%).
Kotlin
Kotlin
Odprtokodni, statično tipiziran programski jezik, ki cilja na JVM, Android, JavaScript in Native.
Kdo je razvil Kotlin?
Kdo je razvil Kotlin?
Signup and view all the flashcards
Kaj je JVM?
Kaj je JVM?
Signup and view all the flashcards
Kompatibilnost Kotlin z Javo
Kompatibilnost Kotlin z Javo
Signup and view all the flashcards
Cilj učenja Kotlin
Cilj učenja Kotlin
Signup and view all the flashcards
Java in Kotlin interoperabilnost
Java in Kotlin interoperabilnost
Signup and view all the flashcards
Kaj je Observer?
Kaj je Observer?
Signup and view all the flashcards
Prednost Observer vzorca?
Prednost Observer vzorca?
Signup and view all the flashcards
Kaj je Observer (razred)?
Kaj je Observer (razred)?
Signup and view all the flashcards
Kaj je ConcreteObserver?
Kaj je ConcreteObserver?
Signup and view all the flashcards
Kaj je Subject (razred)?
Kaj je Subject (razred)?
Signup and view all the flashcards
Kaj je ConcreteSubject?
Kaj je ConcreteSubject?
Signup and view all the flashcards
Kaj je Open/Closed princip?
Kaj je Open/Closed princip?
Signup and view all the flashcards
Kje se uporablja Observer?
Kje se uporablja Observer?
Signup and view all the flashcards
finish()
finish()
Signup and view all the flashcards
setContentView(View)
setContentView(View)
Signup and view all the flashcards
Parcelable
Parcelable
Signup and view all the flashcards
Bundle
Bundle
Signup and view all the flashcards
Intent (Namen)
Intent (Namen)
Signup and view all the flashcards
Implicitni Intent
Implicitni Intent
Signup and view all the flashcards
Eksplicitni Intent
Eksplicitni Intent
Signup and view all the flashcards
Manifest
Manifest
Signup and view all the flashcards
putExtra()
putExtra()
Signup and view all the flashcards
intent.extras
intent.extras
Signup and view all the flashcards
android:launchMode
android:launchMode
Signup and view all the flashcards
Back Stack
Back Stack
Signup and view all the flashcards
Tasks
Tasks
Signup and view all the flashcards
registerForActivityResult()
registerForActivityResult()
Signup and view all the flashcards
setResult()
setResult()
Signup and view all the flashcards
Android viri
Android viri
Signup and view all the flashcards
Lokacija virov v Androidu
Lokacija virov v Androidu
Signup and view all the flashcards
Osnovni tipi virov
Osnovni tipi virov
Signup and view all the flashcards
Animator (Property Animations)
Animator (Property Animations)
Signup and view all the flashcards
Anim (Tween Animations)
Anim (Tween Animations)
Signup and view all the flashcards
Drawable (Drawables)
Drawable (Drawables)
Signup and view all the flashcards
Layout (Layout)
Layout (Layout)
Signup and view all the flashcards
Values (Values)
Values (Values)
Signup and view all the flashcards
Kaj je Observer vzorec?
Kaj je Observer vzorec?
Signup and view all the flashcards
Kaj je ISubject?
Kaj je ISubject?
Signup and view all the flashcards
Kaj je ConcreteSubjectNewsPage?
Kaj je ConcreteSubjectNewsPage?
Signup and view all the flashcards
Kaj je onCreate()?
Kaj je onCreate()?
Signup and view all the flashcards
Kaj je onStart()?
Kaj je onStart()?
Signup and view all the flashcards
Kaj je onResume()?
Kaj je onResume()?
Signup and view all the flashcards
Kaj je onPause()?
Kaj je onPause()?
Signup and view all the flashcards
Study Notes
Platformno odvisen razvoj aplikacij
- Platformno odvisen razvoj (Platform-based design) je pristop, ki poudarja dobre prakse integracije izdelkov v specifično računalniško okolje.
- Specifično računalniško okolje je sestavljeno iz namenske programske in strojne opreme.
- Cilj platformno odvisnega razvoja je zmanjšanje razvojnih tveganj, stroškov in časa, potrebnega za trženje.
Kotlin
- Kotlin je odprtokodni, statično tipiziran programski jezik, ki cilja na JVM, Android, JavaScript in Native.
- Razvilo ga je podjetje JetBrains (Intellij, Android Studio).
- Kotlin ima veliko podpore s strani podjetja Google.
- Prevedena koda v Kotlinu (bajtkode) je združljiva z javansko kodo, kar omogoča izvajanje programov na vseh sistemih, ki podpirajo Javo.
- Cilj je spoznati osnovne koncepte programskega jezika Kotlin, za izdelavo aplikacije Android
- Vstopna točka za samostojne programe v Kotlinu je funkcija
main
.
Spremenljivke v Kotlinu
- Določilo
val
se uporablja za nespremenljive spremenljivke (immutable), katerih vrednost se lahko samo bere. - Določilo
var
se uporablja za spremenljive spremenljivke (mutable), katerih vrednost se lahko nastavlja. - Primer:
val one = 1 // Int
val two: Int = 2
var three = 3
three = 33
val oneLong = 1L // Long
val oneByte: Byte = 1
val str = "abcd"
const val PI = 3.14 //not local variable
Krmilni stavek for
- Namesto klasične oblike z pogojem, se uporablja interval ali ključne besede
downto
aliin
. - Primer:
val from = 3
val to = 10
for(i in from..to)
println("Number $i.")
for(i in 2..8 step 2)
println("Step $i.")
for (i in 3 downto 0)
println("downTo $i.")
val languages = listOf("C++", "Java", "Kotlin")
for (language in languages)
println("Best programming language is $language !")
Krmilni stavek when
- V Kotlinu ni
switch/case
stavka; namesto tega se uporabljawhen
. - Za razliko od
switch
, vwhen
ni omejitve na ordinalne tipe. - Ker je vse objekt in so vsi razredi podedovani iz razreda
Any
, se lahko zapiše spodnji primer. - Primer:
fun cases(obj: Any) {
when (obj) {
2 -> println("Two")
"Err" -> println("Error arain")
is Byte -> println("like instance of byte in C++")
!is String -> println("Not a string")
else -> println("default in switch")
}
}
Razredi v Kotlinu
- Določila
val
invar
v konstruktorju določata sposobnost spreminjanja lastnosti razreda (mutability). - Priporočena oblika za konstruktor je definicija v glavi razreda.
- Telo primarnega konstruktorja se napiše v inicializacijski blok
init
. - Sekundarni/dodatni konstruktor se začne z rezervirano besedo
constructor
. - V večini primerov sekundarni konstruktor ni potreben (uporabljajo se privzeti argumenti v primarnem).
- Možno je določiti vidnost lastnosti:
private
,protected
,public
,internal
. - Internal je vidno znotraj modula, privzeta vidnost je
public
.
Dedovanje v Kotlinu
- Uporaba določila
open
določa ali se lahko iz razreda deduje. - Razred iz katerega izpeljan razred deduje, zapišemo za dvopičjem.
- Razrednih spremenljivk (static) v Kotlinu ni.
- Namesto tega se lahko uporabi
companion object
.
Podatkovne strukture
- Seznami so lahko spremenljivi (
MutableList
) ali nespremenljivi (List
). - Mape so lahko spremenljive (
MutableMap
) ali nespremenljive (Map
). - Podatkovni razred (
data class
) je razred, ki ima privzeto generirane dodatne funkcionalnosti za predstavitev podatkovnih objektov. - Primeri generiranih metod so
hashCode()
,equals()
,toString()
,copy()
,componentN()
. hashCode()
ustvari zgoščeno vrednost na podlagi lastnosti objekta, ne na podlagi naslova.equals()
primerja objekte z metodohashCode()
.toString()
vrne niz z vrednostmi lastnosti.componentN()
omogoča generični dostop do lastnosti (npr.component1()
za dostop do imena incomponent2()
za dostop do priimka).copy()
ustvari globoko kopijo objekta (deep copy), vendar to velja samo za osnovne lastnosti.- Unikatni ključ/šifra se generira z metodo
randomUUID()
.
LocalDateTime razred
- Za delo z datumi je namesto izdelave lastnega razreda priporočljiva uporaba
LocalDateTime
.
Vmesniki v Kotlinu
- Vmesniki lahko vsebujejo deklaracije abstraktnih metod (brez telesa), njihove implementacije, in nimajo lastnega stanja (lastnosti).
- Pogosti vmesnik je
Comparable
, ki omogoča uporabo vgrajenih algoritmov za urejanje seznamov.
Izjeme v Kotlinu
- Izjema je objekt, ki je instanca razreda
Exception
ali podedovanega razreda.
Varnost ničelne vrednosti (null safety)
- Kotlin omogoča preverjanje varnosti ničelne vrednosti. Konstruktorji zahtevajo, da nastavjo vse vrednosti (razen eksplicitnega nica).
- Uporaba operatorja elvis
?:
(će je null, drugače uporabi neko drugo vrednost). - Operator
!!
pove prevajalniku, da bomo sami poskrbeli za preverjanje ničelne vrednosti. - Operator
as
pove prevajalniku, da ima opravka z nadzorovano spremembo tipa.
Arhitektura platforme Android
- Jedro (Linux)
- Plast abstrakcije strojne opreme (Hardware Abstraction Layer (HAL))
- Android izvajalni stroj (Android Runtime)
- Nativne knjižnice (Native C/C++)
- Javanski aplikacijski vmesnik (Java API Framework)
- Sistemske aplikacije (System Apps)
Osnovni koncepti Android aplikacije
- Activities: Ekranska okna, sestavljena iz views.
- Views: Osnovni elementi ekranskih oken.
- View groups: Sestavljen iz view elementov.
- Layout (razvrščevalnik): skrbi za pozicioniranje grafičnih elementov
- Intent / Action / Event: namen akcije s pripadajočimi podatki:
- Sporočila med okni (windowing messages): Odpri novo okno, Zapri okno ...
- Model objavi in naroči (publish-and-subscribe): Alarm zbudi aplikacijo
- Komunikacija med procesi (inter-process): Ob sprejemu pošte, vstavi obvestilo
- Registracija aplikacija (application registries): Naloži aplikacijo
- Resources (viri):
- Vsi nizi (string), Slike/Filmi, XML definicije.
- Samodejno generiranje resources referenc: ustvari datoteka R.java, ki vsebuje statične reference na posamezne elemente
Android viri Types
- values - arrays, colors, dimensions,strings, styles
- layout - UI/ view definitions
- xml - samosvoji xml se prevedejo
- raw - se ne prevedejo npr.: video ...
- anim - animacije, ki se prevedejo
- Izbira glede na napravo: Ekran,Lokalizacija
- Enote pri podajanju vrednosti
- px - Pixel
- in - Inč
- mm - milimeter
- pt - točka
- dp - pixel ki ni odvisen od gostote točk na ekranu (density-independent pixel) večina nastavitev
px = dp * (dpi / 160) //160 je referenčna gostota
- sp - omogoča skaliranje (enako kot dp, samo da omogoča spreminjanje velikosti glede na nastavitve uporabnika)
(scale-independent pixel) ponavadi so to pisave
Grafična komponenta
- Pogosto definirana izven kode. Npr v xml datoteki.
- Dostop do objekta komponente ustvarjenega ob inicializaciji, prekoidentifikatorja id.
Samodejno povezovanje (binding)
- Ob uporabi komponente z identifikatorjem id, se samodejno ustvari spremenljivka z imenom id. V tem primeru pride do samodejne povezave do objekta komponente (databinding).
- Android to omogoča ob ustvarjanju xml datotek.
- V build.gradle (Module: app) je potrebno pod android zavihek dodati:
android{
...
buildFeatures{
viewBinding = true
}
}
- Potrebno se je prepričati, da se xlm imena koncujejo z Binding.
- Prevedeni razredi se za tem uporabijo v Activities.java
Razredne spremenljivke
Kotlin nima razrednih spremenljivk (angl. static). Namesto tega lahko uporabimo koncept spremljajočih objektov (companion object).
Podatki v objektu
- DTO (Data Transfer Object): Objekti so primerni za transportiranje po mreži ali med instancami navideznega izvajalnega pogona (JVM).
- POJO (Plain Old Java Object): Vse lastnosti razreda so javne in ima privzeti konstruktor.
- JavaBeans: razred je podoben razredu POJO, samo da ima privatne lastnosti. Dostopamo s funkcijami set in get.
- VO (Value Object): Primerjamo objekte po vrednosti, najpogosteje ENUM. Stanja objekta dostopna s promjenljivke.
Povezovanje projekta
- Project to project dependencies.
- V gradle konfiguracijski datoteki je potrebno dodati import (implementation project ()) k relevantnim entitetam v src direktorijih.
Razredi
class MyActivity<AppCompatActivity //En razred per file> {
OnCreate(){
//view binding. This is the preferred data source !!!
}
//viri etc.
}
Viri
- Na voljo so tipi: types - arrays, colors, dimensions
- strings, styles
- layout - UI/ view definitions
- xml - samosvoji xml se prevedejo
- raw - se ne prevedejo npr.: video ...
- anim - animacije, ki se prevedejo
- Izbira glede na napravo
- Ekran
- Lokalizacija
- Enota -px -in -mm -pt -dp (density independend pixels) -sp (scale independend pixels)
Layouts
Razvrščovalje je eno izmed najpomembnejših znanjem.
- LinearLayout -Horizontal -Vertical -Weigth (premik komponenta se začne tam, konča pa pri izbrani naslednji referenci) -Nekateri stroji ne podpirajo LinearLayout funkcij.
- ConstraintLayout -Izgled ni pomemben -Referencialni view -Karaktristike so odvisne od referenc -Chain (dvosmerna povezava) -Bias reference
Dogodki and actions
- Dogodki se sprožijo v razredu ki podpria OnClickListener
- Izraz:
- onClick = "{function}()"
Aktivnostni življenski cikel
Aktivnostni življenski cikel je zelo kompleksen. Zato je potrebno dobro razumeti pomembnost in funkcionalnost le teh. Primer metode se sproži/ne sproži med navigacijo
- Pomembna metoda je OnPaused()
- Pomembna je tudi implementiramnje shranjevanja podatkov na preklopu.
- Zaznamba je Override
- Vsaka funkcija zahteva pomemben context
Vmesniki
- Interface je deklaracija (implementacija ni pomembna) - Vsebuje samo podpis - Ne vsebuje notranjega stanja - Ni konstruktorja
- Implementirati je potrebno vse funkcije
- Izberemo lahko katere funkcije v razredu bomo uporabili
Prenašanje podatkov
- Podatke se prenaša s parcel-om -Sprememba tipa podatkov v string - zahteva posebne knjižnice
Podatkovni seznam z viri
- Predstavljamo seznam v recicle viewu -Layout Manager -View holder -Adapter
Slike v recicle view (url) se pokažejo s pomočjo picasso knjižnice. Za to potrebujemo dodatnih funkcij in razredov.
Naročanje in oddajanje v razredu Application
- Kdaj se registriramo in oddamo dogodka v aplikacijski razred.
public sealed interface ApplicationUI {
data class NavToLogin @Inject constructor() : ApplicationUI
data class SaveToSharedPreferences constructor(val savedString: String) : ApplicationUI
}
Event Bus
- Event Bus služi za povezavo vmesnikov -Se jo uvozi v ločen zavihek -Ustvari funkcijo -Pojavijo se težave s shranjevanjem podatkov -Event bus je alternativa live podatkov
Okhttp
-
Okhttp je orodje za poenostavo komunikacije
https://square.github.io/okhttp/
Osnovni viri in atributi
- Potrebno je ustvariti xml mapo za kreiranje layout ov
- Potrebno je dodati implementacijo za okhttp
- Nastavimo ime pri prijavljanju kje je endpoint
- Izkaže se za zelo zapletena orodje
- Potrebno je ustvariti class za odziv
- Prejemanje ključev se prebere iz json datoteke
API in Firebase
Delo z API in Firebase je zelo kompleksno Potrebno se je prijaviti in naložiti certifikacijo Potrebno je preučiti različne napake
Povezave
- Priporočjivo je slediti uradnim naslovom za preučevanje.
- Realtime database
- Je narejena za hitro posodabljanje podatkov
GML API
- Je narejen za izboljšaj uporabnijske izkušnje
Lokacijski vir
- Natančna lokacija
- S pomočjo gps-a je pridobimo
- Dodatno se jo odobri v android-u Za lajšane preverjanje se uporabi:
implementation "com.google.android.gms:play-services-location:+"
- Narejdijo se korutine, da se izvede lajšane pridobivanje
- Pravice nadzora
- Potrebno se je izogniti gnezdenja, saj povzročajo kompleksnost
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.