Professional Documents
Culture Documents
PPAB-05 L0122011 AkmaGhaniAidyn
PPAB-05 L0122011 AkmaGhaniAidyn
NIM : L0122011
Analisis Kode
Pada praktikum kali ini, membuat sebuah aplikasi bertemakan F1, yang menerapkan
RecyclerView dan layout yang terdiri dari gambar, judul, dan deskripsi. Serta juga terdapat
fungsi on click pada setiap item. Lalu aplikasi ini juga dibuat kompatibel dengan dark/light
theme.
MainActivity.kt
package com.pab.f1app
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
recyclerView = findViewById(R.id.recyclerView)
recyclerView.layoutManager = LinearLayoutManager(this)
adapter = MyAdapter(this, generateDummyData())
recyclerView.adapter = adapter
}
return dataList
}
}
5. Pengisian Data: Data yang ingin ditampilkan dalam RecyclerView perlu disiapkan
terlebih dahulu. Dalam kode tersebut, terdapat method generateDummyData() yang
menghasilkan daftar data dummy yang akan ditampilkan dalam RecyclerView. Data
ini dapat berupa daftar tim Formula 1 beserta detailnya seperti nama tim, deskripsi,
dan pembalapnya.
MyAdapter.kt
package com.pab.f1app
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import android.content.res.Configuration
1. Konstruktor:
• Menerima dua parameter: context yang merupakan objek Context dari aktivitas
yang menggunakan adapter ini, dan dataList yang merupakan List dari
DataModel yang akan ditampilkan dalam RecyclerView.
2. onCreateViewHolder():
3. getItemCount():
4. onBindViewHolder():
• Dipanggil untuk menetapkan data ke tampilan ViewHolder pada posisi tertentu.
• Mengambil data dari dataList pada posisi tertentu dan mengatur tampilan
ViewHolder sesuai dengan data tersebut.
DataModel.kt
package com.pab.f1app
1. DataModel Class:
• Ini adalah kelas data (data class) Kotlin yang dideklarasikan dengan kata kunci
data class.
• Kelas ini memiliki empat properti: imageUrl (Integer), title (String), description
(String), dan drivers (List<String>).
2. imageUrl:
• Tipe datanya adalah Int, yang mungkin merujuk ke resource gambar di aplikasi
Android.
3. title:
4. description:
5. drivers:
Kelas DataModel bertindak sebagai struktur data untuk menyimpan informasi tentang
setiap tim Formula 1 yang akan ditampilkan dalam aplikasi.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ImageView
android:id="@+id/toolbar_icon"
android:layout_width="60dp"
android:layout_height="60dp"
android:src="@drawable/f1_logo"
android:scaleType="centerInside"
android:layout_gravity="right"/>
</androidx.appcompat.widget.Toolbar>
</androidx.constraintlayout.widget.ConstraintLayout>
1. ConstraintLayout:
• Ini adalah root layout yang digunakan untuk mengatur tata letak tampilan.
• Menggunakan androidx.constraintlayout.widget.ConstraintLayout.
2. Toolbar:
• Toolbar adalah komponen UI yang digunakan sebagai app bar di atas layar.
3. RecyclerView:
• Lebar diatur sebagai match_parent dan tinggi diatur sebagai 0dp agar
mengambil sisa ruang di layar.
File activity_main.xml bertanggung jawab untuk menentukan tata letak tampilan yang
akan ditampilkan dalam aktivitas MainActivity, termasuk Toolbar dan RecyclerView.
Item_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
app:cardCornerRadius="8dp"
app:cardElevation="4dp">
<LinearLayout
style="@style/ItemBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<ImageView
android:id="@+id/imageView"
android:layout_width="100dp"
android:layout_height="100dp"
android:scaleType="centerCrop" />
<TextView
android:id="@+id/titleTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:textStyle="bold"
style="@style/TextColor"
android:layout_marginTop="8dp" />
<TextView
android:id="@+id/descriptionTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="3"
android:ellipsize="end"
style="@style/TextColor"
android:layout_marginTop="8dp"/>
<TextView
android:id="@+id/driverLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="Drivers:"
android:textSize="16dp"
style="@style/TextColor"
android:layout_marginTop="8dp"
android:visibility="gone" />
<TextView
android:id="@+id/driverTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
style="@style/TextColor" />
<ImageView
android:id="@+id/expandCollapseIcon"
android:layout_width="45dp"
android:layout_height="45dp"
android:src="@drawable/show_more"
android:layout_gravity="end"
android:padding="8dp"
android:visibility="visible" />
</LinearLayout>
</androidx.cardview.widget.CardView>
1. CardView:
• Padding sebesar 16dp untuk memberikan jarak antara konten dengan tepi
CardView.
3. ImageView (imageView):
4. TextView (titleTextView):
5. TextView (descriptionTextView):
6. TextView (driverLabel):
7. TextView (driverTextView):
8. ImageView (expandCollapseIcon):
File item_box_dark.xml adalah file drawable XML yang mendefinisikan bentuk latar
belakang untuk item dalam mode gelap (dark mode) di aplikasi Android.
1. Shape:
2. Solid Color:
3. Stroke:
4. Corners:
File item_box_light.xml adalah file drawable XML yang mendefinisikan bentuk latar
belakang untuk item dalam mode terang (light mode) di aplikasi Android. Berikut adalah
penjelasan poin-poin dari file tersebut:
1. Shape:
2. Solid Color:
3. Stroke:
4. Corners:
1. Theme.F1App:
• Saat ini belum ada penyesuaian tambahan pada tema terang (light mode),
namun dapat disesuaikan sesuai kebutuhan dengan menghapus komentar dan
menambahkan item yang diperlukan.
2. TextColor:
3. ItemBox:
• Saat aplikasi berjalan dalam mode gelap (dark mode), latar belakang item akan
beradaptasi dengan menggunakan drawable yang berbeda.
File themes.xml digunakan untuk mengatur tema-tema yang akan diterapkan dalam
aplikasi Android, termasuk tema dasar aplikasi dan pengaturan-pengaturan tambahan seperti
warna teks dan latar belakang item.
Themes.xml(night)
1. Theme.F1App:
• Tema dasar (base) dari aplikasi saat berjalan dalam mode gelap dengan nama
Theme.F1App.
• Saat ini belum ada penyesuaian tambahan pada tema gelap, namun dapat
disesuaikan sesuai kebutuhan dengan menghapus komentar dan
menambahkan item yang diperlukan.
2. TextColor:
3. ItemBox:
• Saat aplikasi berjalan dalam mode gelap, latar belakang item akan
menggunakan drawable yang sesuai.
File themes.xml (night) digunakan untuk mengatur tema-tema yang akan diterapkan
dalam mode gelap (dark mode) dalam aplikasi Android, termasuk tema dasar aplikasi dan
pengaturan-pengaturan tambahan seperti warna teks dan latar belakang item.
Tampilan Aplikasi
• Light Theme
Berikut adalah tampilan aplikasi versi light theme nya. Pada default akan menampilkan
image, judul, dan deskripsi yang dibatasi 3 line, lalu pada fungsi on click akan
mengexpand deskripsi tersebut.
• Dark Theme
Berikut adalah tampilan aplikasi versi dark theme nya.