PORA

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson
Download our mobile app to listen on the go
Get App

Questions and Answers

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?

  • 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?

  • 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?

<p><code>onStop</code> (A)</p> Signup and view all the answers

Katera metoda življenjskega cikla Activity se uporablja za sprostitev virov in zaustavitev niti, ko aktivnost ni več vidna uporabniku in se umika v ozadje?

<p><code>onPause</code> (A)</p> Signup and view all the answers

Kaj je glavna odgovornost metode onDestroy v življenjskem ciklu Activity?

<p>Počistiti pomnilnik in sprostiti vire (C)</p> Signup and view all the answers

Glede na primer kode v Kotlinu, kaj se izpiše v konzolo, ko nastavimo uniNews.newestArticle = "www.um.si"?

<p>Izpis za vsakega opazovalca: &quot;New article: <a href="http://www.um.si">www.um.si</a> for [ime opazovalca].&quot; (C)</p> Signup and view all the answers

Katera trditev pravilno opisuje namen vmesnika ISubject v vzorcu opazovalec?

<p>Definira metode za dodajanje, odstranjevanje in obveščanje opazovalcev o spremembah stanja. (A)</p> Signup and view all the answers

Kateri od naslednjih razlogov ni glavni vzrok za zapletenost upravljanja življenjskega cikla aktivnosti v Androidu?

<p>Preprečevanje konfliktov med različnimi različicami programske opreme Android. (C)</p> Signup and view all the answers

Katera metoda se kliče ob uničenju aktivnosti in omogoča preverjanje, ali se aktivnost zaključuje?

<p>onDestroy() (C)</p> Signup and view all the answers

Kateri razred v Androidu se uporablja za prenos podatkov med različnimi komponentami aplikacije in omogoča lastno implementacijo serializacije?

<p>Parcelable (A)</p> Signup and view all the answers

Kakšna je glavna omejitev uporabe razreda Bundle za prenos podatkov med aktivnostmi?

<p>Omejena velikost prenosa podatkov na 1MB. (D)</p> Signup and view all the answers

Katera od naslednjih možnosti ni primer vira, ki ga lahko najdemo v projektu Android?

<p>Java izvorna koda (B)</p> Signup and view all the answers

Zakaj se za zagon druge aktivnosti uporablja Intent namesto metode Run() ali Execute()?

<p><code>Intent</code> preveri razpoložljivost strojne in programske opreme za izvedbo akcije. (C)</p> Signup and view all the answers

V kateri mapi znotraj strukture projekta Android se običajno nahajajo viri aplikacije?

<p><code>moja_aplikacija/app/src/main/res</code> (D)</p> Signup and view all the answers

Kateri parameter v klicu Intent(this, SecondActivity::class.java) določa, kje se bo aktivnost vrnila po zaključku SecondActivity?

<p>this (C)</p> Signup and view all the answers

Katera vrsta datoteke se uporablja za opis Property Animations v Androidu?

<p>XML datoteke (C)</p> Signup and view all the answers

Katera komponenta Android sistema definira lastnosti aktivnosti, kot so ikone, labele in teme ter deklarira, kako se aktivnost lahko uporablja?

<p>Manifest (B)</p> Signup and view all the answers

Katero vrsto virov najdemo v mapi drawable?

<p>Bitne slike in XML datoteke, ki se uporabljajo kot izris (C)</p> Signup and view all the answers

Kako bi pravilno ustvarili implicitni Intent, ki uporabnika preusmeri na spletno stran https://www.example.com?

<p><code>Intent(Intent.ACTION_VIEW, Uri.parse(&quot;https://www.example.com&quot;))</code> (A)</p> Signup and view all the answers

Kaj je glavna funkcija datotek v mapi layout?

<p>Opis izgleda grafičnih komponent (C)</p> Signup and view all the answers

Za kaj se uporablja mapa values v virih Android aplikacije?

<p>Za shranjevanje nizov, barv in dimenzij (B)</p> Signup and view all the answers

Kakšen tip datotek bi najverjetneje shranili v mapi raw?

<p>MP3 datoteke ali začetne šifrante (A)</p> Signup and view all the answers

Kako lahko samodejno ustvarimo vrednosti virov v Android studiu?

<p>S pomočjo predlogov Alt+Enter v urejevalniku (C)</p> Signup and view all the answers

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?

<p>Platformno odvisen razvoj (C)</p> Signup and view all the answers

Kateri cilj NI značilen za platformno odvisen razvoj aplikacij?

<p>Delo z generičnimi podatkovnimi strukturami (B)</p> Signup and view all the answers

Kateri od naštetih jezikov je primarno namenjen razvoju aplikacij za JVM, Android, JavaScript in Native?

<p>Kotlin (A)</p> Signup and view all the answers

Katero podjetje je primarno odgovorno za razvoj programskega jezika Kotlin?

<p>JetBrains (B)</p> Signup and view all the answers

Kaj pomeni, da programski jezik 'cilja na JVM'?

<p>Da se lahko izvaja na katerem koli sistemu, ki podpira Javo. (C)</p> Signup and view all the answers

Zakaj je združljivost Kotlin kode z Java kodo pomembna za razvoj Android aplikacij?

<p>Ker lahko izkoriščamo obstoječe Java knjižnice in ogrodja. (B)</p> Signup and view all the answers

Katere od naslednjih možnosti NI prednost uporabe Kotlina pri razvoju Android aplikacij, če že poznamo Javo?

<p>Avtomatska pretvorba obstoječe Java kode v Kotlin. (C)</p> Signup and view all the answers

Kako sprotni pristop ocenjevanja vpliva na končno oceno, v primerjavi s klasičnim pristopom?

<p>Sprotni pristop ocenjevanja omogoča bonus točke za prisotnost, kar lahko izboljša končno oceno. (D)</p> Signup and view all the answers

Kateri načrtovalski vzorec omogoča 'komunikacijo ena proti mnogo' in se uporablja za obveščanje različnih objektov o spremembi stanja?

<p>Opazovalec (Observer) (C)</p> Signup and view all the answers

Katera od naslednjih situacij je najmanj primerna za uporabo načrtovalskega vzorca 'Opazovalec'?

<p>Izračun kompleksne matematične funkcije, ki ne vključuje interakcije z zunanjimi komponentami ali stanji. (B)</p> Signup and view all the answers

Katera od naslednjih komponent ni tipična za implementacijo načrtovalskega vzorca 'Opazovalec'?

<p>Strategija (Strategy) - definira družino algoritmov (D)</p> Signup and view all the answers

Kaj pomeni 'šibka sklopljenost' (loose coupling) v kontekstu načrtovalskega vzorca 'Opazovalec'?

<p>Objekti lahko komunicirajo brez poznavanja konkretne implementacije drugih objektov, kar omogoča večjo fleksibilnost in lažje vzdrževanje kode. (B)</p> Signup and view all the answers

Kako razred ConcreteSubject uporablja metodo notify() v načrtovalskem vzorcu 'Opazovalec'?

<p>Za obveščanje vseh registriranih opazovalcev o spremembi stanja. (D)</p> Signup and view all the answers

Kateri princip SOLID načel je najbolj tesno povezan z načrtovalskim vzorcem 'Opazovalec' in zakaj?

<p>Princip odprto/zaprto (Open/Closed Principle), ker omogoča razširitev funkcionalnosti brez spreminjanja obstoječe kode. (C)</p> Signup and view all the answers

V kontekstu kode podane v onCreate() metodi, kaj se izpiše v konzolo, ko uporabnik pritisne na gumb btnAdd?

<p><code>Action touch down in Add btn</code> (B)</p> Signup and view all the answers

Čemu služi vrstica kode return v?.onTouchEvent(event) ?: true v metodi onTouch?

<p>Omogoča nadaljnjo obdelavo dogodka dotika s strani sistema in vrne <code>true</code>, če ni prišlo do napake. (B)</p> Signup and view all the answers

Katera metoda se uporablja za prenos podatkov med dvema aktivnostima, kjer prva aktivnost zažene drugo in ji posreduje vrednost YEAR?

<p><code>putExtra()</code> metode objekta <code>Intent</code> (A)</p> Signup and view all the answers

Kaj je namen metode registerForActivityResult v povezavi z zagonom aktivnosti?

<p>Za registracijo callback funkcije, ki se izvede, ko se druga aktivnost zaključi in vrne rezultat. (A)</p> Signup and view all the answers

Kateri launchMode zagotavlja, da bo sistem ustvaril novo instanco aktivnosti, ne glede na to, ali že obstaja instanca te aktivnosti v sistemu?

<p><code>standard</code> (A)</p> Signup and view all the answers

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?

<p>Ustvarjanje novega <code>Intent</code>, dodajanje imena kot extra, nastavitev rezultata z <code>setResult()</code> in klic <code>finish()</code>. (D)</p> Signup and view all the answers

Kako aktivnost pridobi podatke, poslane z metodo putExtra() iz druge aktivnosti?

<p>Z uporabo metode <code>getIntent().getExtras()</code> za pridobitev <code>Bundle</code> in nato <code>getString()</code> z ustreznim ključem. (B)</p> Signup and view all the answers

Katera izmed naslednjih možnosti pravilno opisuje razliko med singleTask in singleInstance launchMode?

<p><code>singleTask</code> ustvari aktivnost v novem tasku, če že ne obstaja, medtem ko <code>singleInstance</code> ustvari aktivnost v novem tasku in zagotovi, da je to edina aktivnost v tem tasku. (C)</p> Signup and view all the answers

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?

<p>V prvem activity se <code>println(&quot;Data from second activity: ${data?.getStringExtra(&quot;firstName&quot;)}&quot;)</code> ne bo izvedla. (B)</p> Signup and view all the answers

Želimo implementirati skeniranje QR kode. Kateri korak je ključen pri uporabi registerForActivityResult v povezavi z zagonom aktivnosti za skeniranje?

<p>Zagotoviti, da druga aktivnost (za skeniranje) vrne <code>RESULT_OK</code> in skenirano vsebino nazaj prvi aktivnosti preko <code>Intent</code>. (B)</p> Signup and view all the answers

Flashcards

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)

Laboratorijske vaje (50%), kolokviji (2 x 25%) ali pisni izpit (50%). Bonus do 3% za prisotnost na predavanjih (>80%).

Kotlin

Odprtokodni, statično tipiziran programski jezik, ki cilja na JVM, Android, JavaScript in Native.

Kdo je razvil Kotlin?

Podjetje JetBrains (Intellij, Android Studio).

Signup and view all the flashcards

Kaj je JVM?

Java Virtual Machine - izvajalno okolje za Java kodo.

Signup and view all the flashcards

Kompatibilnost Kotlin z Javo

Kotlin koda se prevede v enak bajtkode kot Java, kar omogoča izvajanje na vseh sistemih, ki podpirajo Javo.

Signup and view all the flashcards

Cilj učenja Kotlin

Spoznati osnove Kotlin, ki omogočajo izdelavo Android aplikacij.

Signup and view all the flashcards

Java in Kotlin interoperabilnost

Omogoča medsebojno delovanje Javanske in Kotlin kode v istem projektu.

Signup and view all the flashcards

Kaj je Observer?

Načrtovalski vzorec, ki omogoča objektom, da spremljajo in se odzivajo na spremembe stanja drugega objekta.

Signup and view all the flashcards

Prednost Observer vzorca?

Omogoča šibko sklopljenost med objekti, ki lahko komunicirajo brez poznavanja implementacije drug drugega.

Signup and view all the flashcards

Kaj je Observer (razred)?

Razred, ki definira vmesnik za objekte, ki bodo obveščeni o spremembah v Subject.

Signup and view all the flashcards

Kaj je ConcreteObserver?

Razred, ki implementira vmesnik Observer in definira, kaj se zgodi, ko je obveščen.

Signup and view all the flashcards

Kaj je Subject (razred)?

Razred, ki vzdržuje seznam opazovalcev in omogoča dodajanje, brisanje in obveščanje.

Signup and view all the flashcards

Kaj je ConcreteSubject?

Razred, ki sproži obveščanje opazovalcev, ko pride do spremembe stanja.

Signup and view all the flashcards

Kaj je Open/Closed princip?

Princip, ki pravi, da mora biti razred odprt za razširitve, ne da bi ga bilo treba spreminjati.

Signup and view all the flashcards

Kje se uporablja Observer?

Primeri so grafični vmesniki, borza, neposredno sporočanje, senzorika in igre.

Signup and view all the flashcards

finish()

Konča in zapre trenutno aktivnost.

Signup and view all the flashcards

setContentView(View)

Nastavi izgled aktivnosti. Primer: setContentView(binding.root).

Signup and view all the flashcards

Parcelable

Omogoča lastno implementacijo serializacije za kompleksne objekte. Android lastna implementacija omogoča komunikacijo med C++, javo …

Signup and view all the flashcards

Bundle

Preprosta implementacija Key-Value shranjevanja podatkov, omejena na 1MB. Implementira vmesnika Cloneable in Parcelable.

Signup and view all the flashcards

Intent (Namen)

Razred, ki se uporablja za posredovanje namenov (akcij) med komponentami aplikacije.

Signup and view all the flashcards

Implicitni Intent

Posreden način za zagon aktivnosti, ki se odloča glede na strojno in programsko opremo napravi.

Signup and view all the flashcards

Eksplicitni Intent

Direkten način za zagon določene aktivnosti znotraj aplikacije.

Signup and view all the flashcards

Manifest

Datoteka, ki vsebuje seznam aktivnosti in njihovih lastnosti.

Signup and view all the flashcards

putExtra()

Pošlje podatke drugi aktivnosti s ključem in vrednostjo.

Signup and view all the flashcards

intent.extras

Prebere podatke, poslane iz druge aktivnosti.

Signup and view all the flashcards

android:launchMode

Določa, kako se aktivnost ustvari in upravlja.

Signup and view all the flashcards

Back Stack

Zaporedje aktivnosti, ki jih je uporabnik odprl.

Signup and view all the flashcards

Tasks

Enota, ki združuje aktivnosti znotraj aplikacije.

Signup and view all the flashcards

registerForActivityResult()

Zažene aktivnost in pričakuje rezultat.

Signup and view all the flashcards

setResult()

Nastavi rezultat za aktivnost, ki je klicala.

Signup and view all the flashcards

Android viri

Slike, glasbene datoteke, video datoteke, XML datoteke (konfiguracije, prevodi) in druge datoteke, uporabljene v aplikaciji.

Signup and view all the flashcards

Lokacija virov v Androidu

Mapa moja aplikacija/app/src/main/res shranjuje vire (resources) Android aplikacije.

Signup and view all the flashcards

Osnovni tipi virov

Animator, anim, drawable, layout, menu, values, raw.

Signup and view all the flashcards

Animator (Property Animations)

XML datoteke za opis animacij.

Signup and view all the flashcards

Anim (Tween Animations)

XML datoteke, ki opisujejo prehodne animacije.

Signup and view all the flashcards

Drawable (Drawables)

Bitne slike ali XML datoteke, ki se uporabljajo kot izris (vektorske).

Signup and view all the flashcards

Layout (Layout)

XML datoteke, ki opisujejo izgled grafičnih komponent.

Signup and view all the flashcards

Values (Values)

XML datoteke, ki vsebujejo vrednosti nizov, barv, dimenzij itd.

Signup and view all the flashcards

Kaj je Observer vzorec?

Vzorec Observer definira odvisnost ena proti mnogo med objekti, tako da, ko se stanje enega objekta spremeni, se vsi njegovi odvisniki obvestijo in posodobijo samodejno.

Signup and view all the flashcards

Kaj je ISubject?

Vmesnik (interface), ki vzdržuje seznam opazovalcev, omogoča dodajanje, odstranjevanje in obveščanje opazovalcev.

Signup and view all the flashcards

Kaj je ConcreteSubjectNewsPage?

Razred, ki implementira ISubject in hrani stanje (npr. najnovejši članek) ter ob spremembi stanja obvesti vse opazovalce.

Signup and view all the flashcards

Kaj je onCreate()?

Metoda, ki se kliče ob ustvarjanju instance Activity. Tukaj se inicializira stanje in uporabniški vmesnik.

Signup and view all the flashcards

Kaj je onStart()?

Metoda, ki pripravi večje objekte potrebne za delovanje aplikacije in nastavi začetne vrednosti grafičnega vmesnika.

Signup and view all the flashcards

Kaj je onResume()?

Metoda, ki osveži podatke in morebitne vire, ki so bili sproščeni ob onPause() (npr. zvok, kamera).

Signup and view all the flashcards

Kaj je onPause()?

Metoda, ki se kliče, ko aktivnost preide v ozadje in postane nevidna. NE shranjujte podatkov tukaj.

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 ali in.
  • 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 uporablja when.
  • Za razliko od switch, v when 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 in var 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 metodo hashCode().
  • toString() vrne niz z vrednostmi lastnosti.
  • componentN() omogoča generični dostop do lastnosti (npr. component1() za dostop do imena in component2() 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.

Quiz Team

Related Documents

Use Quizgecko on...
Browser
Browser