Tugas 3 PPB
TUGAS 3 PPB
MEMBUAT BIRTHDAY CARD
Nama: Muhammad Lintang Panjerino
NRP: 5025201045
Kelas: PPB I
Tahun: 2024
Link Github: Tugas 3 - Birthday Card
Pada Tugas 3 PPB kali ini, diberikan tugas mengenal lebih dalam tentang “Composable” pada Jetpack Compose. Untuk memahami konsep “Composable” lebih mendalam secara langsung, dibuat proyek sederhana yang berupa aplikasi ucapan selamat ulang tahun sederhana. Pada proyek ini, digunakan software Android Studio dan bahasa pemrograman Kotlin. Proyek ini menggunakan referensi dari situs https://developer.android.com/codelabs/basic-android-kotlin-compose-text-composables?hl=id#0 yang kemudian dimodifikasi. Berikut adalah langkah untuk mengerjakan projek ini.
Langkah pertama adalah membuat proyek baru pada Android Studio dan pilih proyek kosong “Empty Activity”. Kemudian, isi nama proyek, lokasi proyek, dan minimum SDK pada window “Empty Activity”. Setelah mengisi detail proyek, maka akan diarahkan langsung ke file MainActivity.kt yang merupakan file utama proyek.
Langkah selanjutnya adalah membuat fungsi HappyBirthdayText yang berisi ucapan selamat ulang tahun. Pada fungsi ini terdapat dua parameter, yaitu message yang berisi pesan ucapan selamat ulang tahun dan from yang berisi nama pengirim. Fungsi HappyBirthdayText ini dipanggil di fungsi onCreate supaya dapat ditampilkan di aplikasi. Untuk menampilkan preview aplikasi yang sudah dibuat, dapat menggunakan anotasi “Preview” yang ditulis “@Preview” dan juga membuat fungsi BirthdayCardPreview di bawahnya. Fungsi BirthdayCardPreview ini memanggil fungsi HappyBirthdayText yang argumennya dapat diisi dengan pesan ucapan dan nama pengirim. Untuk melihat preview aplikasi dapat memilih panel “Desain” di sebelah kanan atas kode sumber, sedangkan untuk melihat kode sumber sekaligus preview aplikasi dapat memilih panel “Split” di sebelah kiri panel “Desain”.
Kemudian langkah
selanjutnya adalah memberikan style pada teks supaya terlihat lebih menarik.
Untuk teks message, hal pertama yang dapat ditambahkan adalah properti font
size dengan ukuran 100 sp (Scalable Pixel). Karena huruf-huruf pada teks
message tumpeng tindih, maka dapat menambahkan properti line height dengan
ukuran 120 sp. Selanjutnya, dapat digunakan properti textAlign dan mengisinya
dengan TextAlign.Center untuk memposisikan teks message ke bagian tengah.
Namun, karena teks message terlalu besar, ukuran font size dikecilkan menjadi
90 sp.
Selain teks message, teks
form juga perlu diberikan style supaya lebih menarik. Hal pertama adalah
mengatur properti font size dengan ukuran 25 sp supaya tidak terlalu besar
karena hanya berisi nama pengirim. Kemudian, menambahkan properti modifier
dengan memberikan padding dan memposisikannya ke ujung kanan supaya terlihat
lebih tepat dan sesuai konteks nama pengirim pada ucapan selamat ulang tahun.
Padding pada modifier dapat diberikan ukuran 14 dp (Density-independent Pixel),
sedangkan untuk memposisikan ke ujung kanan dapat mengatur align dengan isi
(alignment = Alignment.End).
Untuk melihat tampilan
sementara dari aplikasi Android yang dibuat, juga dapat melakukan preview
dengan menggunakan emulator dari Android Studio. Konfigurasi pertama yang harus
dilakukan adalah dengan memilih menu "Device Manager" di sebelah
kanan sisi Android Studio, kemudian memilih tipe device dan juga versi image
Android. Setelah melakukan konfigurasi tersebut, pilih menu "Run
'app'" untuk menjalankan aplikasi. Supaya terlihat lebih menarik lagi,
ditambahkan warna pada background aplikasi dan juga warna pada teks. Warna
untuk background adalah magenta, warna untuk teks ucapan selamat adalah biru,
dan warna nama pengirim adalah cyan.
Kemudian, agar konten
lebih berisi dan menarik, ditambahkan sebuah gambar dan beberapa ikon lain. Cara
untuk memuat gambar pada proyek ini, dapat dilihat melalu referensi berikut https://developer.android.com/jetpack/compose/graphics/images/loading?hl=id
yang kemudian dimodifikasi.
Berikut adalah potongan kode sumber file MainActivity.kt
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.example.happybirthdaylintang.ui.theme.HappyBirthdayLintangTheme
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
HappyBirthdayLintangTheme {
// A surface container using the 'background' color from the theme
Surface(
modifier = Modifier.fillMaxSize(),
color = Color.Magenta
) {
HappyBirthdayText(
message = "Happy Birthday Musiala!",
from = "~From Lintang⚽⚽",
modifier = Modifier.padding(8.dp)
)
}
}
}
}
}
@Composable
fun HappyBirthdayText(message: String, from: String, modifier: Modifier = Modifier) {
Column(
verticalArrangement = Arrangement.Center,
modifier = modifier.padding(8.dp)
) {
Image(
painter = painterResource(id = R.drawable.musiala_cartoon),
contentDescription = "Image",
modifier = Modifier
.size(300.dp)
.align(alignment = Alignment.CenterHorizontally)
)
Text(
text = message,
fontSize = 90.sp,
lineHeight = 120.sp,
textAlign = TextAlign.Center,
color = Color.Blue
)
Text(
text = from,
fontSize = 25.sp,
color = Color.Cyan,
modifier = Modifier
.padding(14.dp)
.align(alignment = Alignment.End)
)
}
}
@Preview(showBackground = true)
@Composable
fun BirthdayCardPreview() {
HappyBirthdayLintangTheme {
HappyBirthdayText("Happy Birthday Musiala!", "~From Lintang⚽⚽")
}
}
Komentar
Posting Komentar