Professional Documents
Culture Documents
02 Aktivnosti I GUI
02 Aktivnosti I GUI
02 Aktivnosti I GUI
Android
Subtitle
Sadržaj predavanja
Subtitle
● Gradle
● Android manifest
– Što je to i čemu služi?
● Aktivnosti
- Što je aktivnost?
- Životni ciklus aktivnosti
●Osnove sučelja
– Layouti
– Widgeti
13.3.2024.
Gradle
Subtitle
• Pojavio se u svijet Androida s Android studiom
• Build sustav
• Open source
• Groovy jezik je baza (Maven i Ant imaju xml konfiguraciju)
• Po novome Gradle može biti i u Kotlin DSL jeziku
• Teško je reći da je neki build sustav bolji od drugoga
13.3.2024.
Gradle
Kako radi na Androidu?
Subtitle
• Postoje tri datoteke:
13.3.2024.
Gradle
Subtitle
• settings.gradle datoteka
• pokazuje koji poddirektoriji će biti sadržani u build-u
• Primjer datoteke:
include ':app'
Gradle
Subtitle
• build.gradle datoteka (na razini cijelog projekta, „top level”)
• Dodavanje Gradle distribucije
• Primjer datoteke:
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath "com.android.tools.build:gradle:7.4.2„
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.21"
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
13.3.2024.
Gradle
build.gradle
Subtitle datoteka
• Gradle ne uključuje Android funkcionalnost po standardnim
postavkama (ili kako bi rekli defaultu)
• Google pruža plugin za Gradle za jednostavnu konfiguraciju
• U datoteci je opisano da se plugin skida s jcenter i google repozitorija
• Ostali repozitoriji su isto uključeni (npr. mavenCentral)
Gradle plugins {
id 'com.android.application’
id ’kotlin-android'
}
Subtitle android {
compileSdkVersion 33
defaultConfig {
• build.gradle datoteka applicationId "hr.android.predavanje"
minSdkVersion 31
(na razini projekta – targetSdkVersion 33
versionCode 1
app direktorij) versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
• Konfiguracija
projekta buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),
• Primjer datoteke: 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
}
dependencies {
implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}
13.3.2024.
Gradle
build.gradle
Subtitle datoteka
• Plugins dodaje Android plugin na build system
• BuildTypes podešava tipove builda projekta
• Dependencies govori o čemu ovisi projekt
• implementation dodaje dependency za cijeli projekt
• testImplementation znači da će junit testno okruženje biti podešeno
• androidTestImplementation dodaje dependency za testno okruženje
13.3.2024.
Gradle
Subtitle
Pokretanje AVD-a
13.3.2024.
Arhitektura Androida
Osnovni pojmovi
Subtitle
Activity Manager i Fragment Manager
●
- Rad s podacima
Resource Manager
●
- Rad s resursima
Intenti
●
Manifest
AndroidManifest.xml
Subtitle
Sadrži opće postavke aplikacije
●
- Pisati po storage-u
- Skidati s Interneta
- Pristup mreži
- Vibriranje
- Itd…
Demo
Subtitle
Aktivnosti
Engl. Activity
Subtitle
Služi za interakciju s korisnikom
●
- onCreate
- onStart
- onResume
- onPause
- onStop
- onRestart
- onDestroy
13.3.2024.
Aktivnosti
Životni ciklus
Subtitle
13.3.2024.
Demo
Subtitle
Metode aktivnosti
onCreate
Subtitle
Inicijalizacija statičkih atributa
●
Metode aktivnosti
onStart
Subtitle
Metoda se poziva kada se aktivnost prikazuje korisniku
●
- Baza podataka
- Mrežni resursi
13.3.2024.
Metode aktivnosti
onResume
Subtitle
●Metoda se poziva kada se aktivnost priprema za interakciju s
korisnikom
U ovom trenutku aktivnost je već na vrhu i ima fokus
●
Metode aktivnosti
onPause
Subtitle
●Poziva se kada neka druga aktivnost djelomično prekrije
trenutnu aktivnost (nema fokus)
U tom slučaju aktivnost prelazi u stanje “Paused”
●
osloboditi resurse
Iz Paused stanja moguće je ići u stanja:
●
- Resumed
- Stopped
13.3.2024.
Metode aktivnosti
onStop
Subtitle
Poziva se kada aktivnost u potpunosti prestane biti vidljiva
●
bazom podataka
13.3.2024.
Metode aktivnosti
onRestart
Subtitle
Rijetko se koristi
●
Metode aktivnosti
onDestroy
Subtitle
Poziva se prije uništavanja aktivnosti
●
oslobađanja resursa!
- Napraviti cleanup (npr. zatvoriti pozadinske dretve)
- Ne pohranjivati podatke unutar ove metode
13.3.2024.
Metode aktivnosti
Obvezno napraviti u svakoj metodi!
Subtitle
Uvijek je potrebno pozvati implementaciju metode u nadklasi!
●
GUI
Osnovni elementi
Subtitle
13.3.2024.
GUI
Nasljeđivanje nekih elemenata
Subtitle
13.3.2024.
GUI
Nasljeđivanje još nekih elemenata
Subtitle
13.3.2024.
View elementi
Svi elementi imaju
Subtitle
● ID – jedinstveno određuje element u cijeloj aplikaciji
● Pozicija s obzirom na element roditelj (px)
- getLeft(), getTop(), getWidth(), getHeight(), getRight(), getBottom()
●Padding – udaljenost od rubova
Layout
Što radi?
Subtitle
Definira izgled ekrana, widgeta i aplikacije
●
Layout
Mora imati definirane
Subtitle
Visinu i širinu
●
Tipovi layouta
LinearLayout
Subtitle
Poravnava elemente u jednom smjeru
●
Više na https://developer.android.com/reference/android/widget/LinearLayout.html
13.3.2024.
Tipovi layouta
RelativeLayout i ConstraintLayout
Subtitle
●Razmješta elemente u zavisnosti o nad
elementu ili drugom elementu
Ako se koristi nepravilno, GUI se lako može
●
početi raspadati
Više na https://developer.android.com/reference/android/widget/RelativeLayout.html i
https://developer.android.com/training/constraint-layout
13.3.2024.
Tipovi layouta
FrameLayout
Subtitle
Zamišljen je da sadrži samo jedan element
●
Više na https://developer.android.com/reference/android/widget/FrameLayout.html
13.3.2024.
Tipovi layouta
GridLayout
Subtitle
Slaže elemente u pravokutnu mrežu
●
Više na https://developer.android.com/reference/android/widget/GridLayout.html
13.3.2024.
Tipovi layouta
TableLayout
Subtitle
Slaže elemente u pravokutnu mrežu
●
Više na https://developer.android.com/reference/android/widget/TableLayout.html
13.3.2024.
Demo
Subtitle
Widgets
Neki od
Subtitle
TextView
●
EditText
●
Button
●
TogleButton
●
Switch
●
CheckBox
●
RadioButton
●
ImageView
●
ProgressBar
●
13.3.2024.
Widgets
TextView i EditText
Subtitle
TextView služi za prikaz teksta
●
Widgets
TextView i EditText parametri
Subtitle
Atribut (XML) Metoda (kod) Opis
gravity setGravity(int) Orijentacija teksta u polju
Demo
Subtitle
Widgets
Button
Subtitle
Button može osim teksta prikazivati i sliku
●
Demo
Subtitle
Button primjeri
13.3.2024.
finish();
Subtitle
● pitanja?